docker 镜像迁移

与世无争的帅哥 提交于 2020-08-11 03:23:23

镜像推送

  • 通过save和load操作
    • docker save 会输出到文件流中,注意通过id生成的tar,load会丢失tag标签,所以建议都是使用tag进行save
      • -o 输入到文件 docker save xxx -o xxx.tar
      • docker save xxx > tar.gz
      • docker save xxx | gzip > xxx.tar.gz 推荐方式(gzip可以从文件流中进行压缩)
    • docker load 这种方式不会改变镜像的id
      • docker load -i
  • 通过私有registry
如果报错server gave HTTP response to HTTPS client,因为在新的版本docker的registry都是通过https,需要在docker客户端增加配置
/etc/docker/daemon.json

# 设置为目标registry的地址
"insecure-registries":["172.21.104.195:5000", "registry.docker.com:5000"]

sudo systemctl daemon-reload
sudo systemctl restart docker


  1. docker tag xxx ip:port/xxx
  2. docker login ip:port
  3. docker push ip:port/xxx
  4. docker pull ip:port/xxx

docker-registry

https://docs.docker.com/registry/deploying/ 官方文档说明,有说明如何加密,其中http的加密方式只是其中一种

  • 配置
    • 端口 5000
    • 目录/var/lib/registry repository存储
    • 目录/var 认证
# 拉取registry
docker pull registry

# 创建镜像registry目录
mkdir -p /data/docker/registry
chown -R xxx:docker /data/docker
chmod g+w /data/docker

# 创建htpasswd密码认证
mkdir -p /data/docker/auth
docker run  --entrypoint htpasswd registry -Bbn root 123456 > /data/docker/auth/htpasswd
docker run  --entrypoint htpasswd registry -Bbn hehuang dh139139 >> data/docker/auth/htpasswd

# 无认证方式启动
docker run -d -p 5000:5000 --restart always --name registry -v '/data:/var/lib/registry' registry

# 认证方式启动
docker run -d -p 5000:5000 --restart=always --name registry \
    -v /data/docker/registry:/var/lib/registry \
    -v /data/docker/auth:/auth \
    -e "REGISTRY_AUTH=htpasswd" \
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
    -e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
    registry

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!