Docker 是目前最流行的容器化平台,可以方便地管理容器化应用。
安装
在 [[Ubuntu]] 可以直接通过 [[apt]] 安装 Docker,这个方式是没有带 [[compose]] 的版本:
# 方式一sudo apt install docker.io如果希望安装包含带 compose 命令的版本,可以用以下方式安装:
# 方法二
# 安装必要工具(一般都有安装)sudo apt install ca-certificates curl -y
# 添加 Docker GPG 密钥sudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加 Docker 官方 apt 源echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新源并安装sudo apt updatesudo apt install docker-ce -y无论是哪种方式,等安装完成后把当前用户加入 docker 用户组,就不需要每次都加 [[sudo]] 执行了:
sudo usermod -aG docker $USER上面命令需要退出当前终端才能生效,可以先用 [[newgrp]] 命令切换到 docker 组:
newgrp docker使用
容器自启
- 运行前: 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同步时间
# 登录容器后docker exec -it <containerid> /bin/sh# 在里面执行ln -sf /usr/share/zoneinfo/Asia/Singapore /etc/localtime启动参数修改
Dock 默认不支持直接修改启动参数,需先停止容器,然后在 Docker 对应容器配置文件中进行修改:
- 先使用 [[sudo]] 命令切换到 root 账号:
sudo su - 使用 [[Docker/inspect]] 命令查看对应配置文件 (在 ResolvConfPath 行,一般默认在 /var/lib/docker/containers/容器 ID),这个文件直接修改即可,cd 不了
- 用 [[vim]] 打开后找到对应的字段修改
- 重启 Docker 和容器。
问题
报错 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