镜像推送
- 通过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
- docker save 会输出到文件流中,注意通过id生成的tar,load会丢失tag标签,所以建议都是使用tag进行save
- 通过私有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
- docker tag xxx ip:port/xxx
- docker login ip:port
- docker push ip:port/xxx
- 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
来源:oschina
链接:https://my.oschina.net/hehuang139/blog/4283051