Docker 使用技巧

2023/06/18 更新 1 次 更新于 2026/08/08 Docker 共 1328 字,约 4 分钟

学习和使用 Docker 过程中遇到的问题和解决办法。

配置镜像源
# 写入配置文件
tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live",
        "https://hub.rat.dev"
    ]
}
EOF

# 重启服务生效
systemctl daemon-reload && systemctl restart docker
镜像导入导出
# 查看已安装的镜像
docker images

# 将镜像导出成 tar 文件,其中 docker.io/a76yyyy/qiandao:latest 可以用 image id 代替,但是恢复时 repository 和 tar 都会是 none
docker save -o qiandao.tar docker.io/a76yyyy/qiandao:latest

# 镜像文件导入
docker load -i qiandao.tar

# 压缩导出
docker save docker.io/a76yyyy/qiandao:latest | gzip > qiandao.tar.gz

# 压缩导入
gunzip -c qiandao.tar.gz | docker load

image-20230618001414234

修改容器启动策略
docker update --restart=always name
  • no - 容器退出时,不重启容器
  • on-failure - 只有在非 0 状态退出时才从新启动容器
  • always - docker 启动的时候自动启动容器,始终自动重启
容器内执行 shell 脚本
# 宿主机上执行,脚本在容器内存在
docker exec test-1 /bin/bash /data/test.sh

# 获取容器内 guest 用户的 UID
docker exec test-1 id -u guest

# 以容器内 guest 用户身份执行命令
docker exec -u guest test-1 /bin/bash /data/test.sh

# 以容器内 UID 为 1000 的用户身份执行命令
docker exec -u 1000 test-1 /bin/bash /data/test.sh
阿里镜像仓库使用

阿里仓库地址:https://cr.console.aliyun.com/cn-hangzhou/instances

首次进入容器镜像服务会提示开通服务并设置 Registry 登录密码,该密码为 docker login 时的登录密码,创建好命名空间,本文为 a_nine

# 登录阿里云仓库
docker login --username=a_nine registry.cn-hangzhou.aliyuncs.com

# 给 ID 为 c26a7c7007fe 的镜像打上版本标签,选择上传的镜像仓库名称为 jekyll-blog,版本为 v2
docker tag c26a7c7007fe registry.cn-hangzhou.aliyuncs.com/a_nine/jekyll-blog:v2

# 将镜像推送到阿里云仓库
docker push registry.cn-hangzhou.aliyuncs.com/a_nine/jekyll-blog:v2

image-20251225200220509

镜像版本 处查看推送的镜像

image-20251225200855460

Search

    Table of Contents