Docker 是目前最流行的容器化平台,可以方便地管理容器化应用。
安装
在 [[CentOS]] 上安装 Docker 需要先安装 [[yum-utils]] 包,然后添加 Docker 官方源:
sudo yum install yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新和安装sudo yum updatesudo yum install docker-ce docker-ce-cli containerd.io
在 [[Ubuntu]] 上安装 Docker 最好先卸载旧版本:
sudo apt-get remove docker docker-engine docker.io containerd runc
然后添加 Docker 官方源,在安装:
# 添加 Docker 官方源curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 国内阿里源curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 软件源echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新和安装sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io
# 创建 docker 用户组sudo groupadd docker# 把当前用户加入 docker 用户组sudo usermod -aG docker $USER
docker 安装完成后,在使用账号非 [[root]] 的情况下,会报 permission denied 错误,此时需把账号加入到 docker 用户组后退出重新登录即可。
使用
命令
容器
run
: 新建并运行
docker run --rm -it --privileged=true --name fabula -v $PWD:/go/src/fabula/ -p 80:8080 golang
# 运行基本 Docker 并进入docker run -it
exec
: 在容器中执行命令ps
: 列出容器- -a: 查看所有
- -l: 最新创建
kill
: 关闭容器images
: 列出本地镜像
- 容器自启
- 运行前: docker run —restart=always
- 运行时:
docker update --restart=always <CONTAINER ID>
运行后修改容器配置
先切到 root 账号:
sudo su
查看要修改的容器 ID 后,停止所有容器和 Docker 服务:
# 查看容器 IDdocker ps
# 停止容器和 docker 服务docker stop $(docker ps -aq)systemctl stop docker.socketsystemctl stop docker.service
之后再修改对应容器配置: vim /var/lib/docker/containers/container-ID/config.v2.json
"MountPoints":{"/home":{"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"//docker/","Target":"/home"}}}
- MountPoints 是挂载配置
导入导出镜像
# 导出镜像到 tar 文件docker save -o <image_name>.tar <image># 导入镜像docker load -i <image_name>.tar# 设置名称和版本docker tag <imported_image_id> python:3.12-slim
问题
报错 permission denied
[[Ubuntu]] 执行 Docker run 报错:docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
- 用 [[gpasswd]] 命令把当前用户加入 docker 组
- 退出重新登录即可,如果无效可先重启试试
无法停止或删除
报错:cannot stop container - signaling init process caused “permission denied”
sudo aa-remove-unknown
同步时间
# 登录容器后docker exec -it <containerid> /bin/sh# 在里面执行ln -sf /usr/share/zoneinfo/Asia/Singapore /etc/localtime