一、搭建私有镜像仓库:
参考https://blog.csdn.net/qq_18598403/article/details/91349114
docker pull registry
cd /usr/local/
mkdir docker_registry
启动一个私有仓库:
即后台启动 registry 镜像构建出来的容器,并命名为docker-registry,端口号映射为5000到5000。
--restart=always代表当容器因为某些原因停止时,不管退出码是什么都自动重启。除了always还有on-failure代表只有退出码不为 0 时才重启,并且接受重启次数参数:--restart=on-failture:5
-v指定将宿主机的/root/docker/registry/目录挂载到容器的/var/lib/registry/目录。这样我们不用进入容器,在宿主机上就能访问到容器内我们感兴趣的目录了。
docker run -itd -p 192.168.*.*:5000:5000 -v /usr/loacal/docker_registry:/var/lib/registry --restart=always --name docker-registry registry:latest
docker run -d -p 5000:5000 --name="docker-registry" --restart=always -v /root/docker/registry/:/var/lib/registry/ registry
查看仓库中的镜像:
curl http://192.168.*.*:5000/v2/_catalog
显示如下说明成功了,因为是新建的仓库,还没有上传任何镜像,所以是空的。
二、将镜像推送至私有仓库:
1. 首先需要在镜像的 tag 上加入仓库地址:
docker tag 镜像名 仓库地址/新的镜像名称:版本
docker tag whu_model 192.168.*.*:5000/whu_model:latest
2. 然后将该镜像推至镜像仓库 要加上tag
docker push 仓库地址/新的镜像名称
docker push 192.168.*.*:5000/whu_model
在这里可能遇到一个问题:
http: server gave HTTP response to HTTPS client
查了网上的博客说是需要注意仓库地址没有加协议部分,docker 默认的安全策略需要仓库是支持 https 的,如果服务器只能使用 http 传输,那么直接上传会失败,需要在 docker 客户端的配置文件中进行声明。
修改 /etc/docker/daemon/json 加入下面内容:
{"insecure-registries":["192.168.*.*:5000"]}
然后重启docker生效
systemctl restart docker
重启之后再次push:
重新再查看一下,发现镜像仓库里已经有成功上传的镜像:
三、删除镜像仓库中的镜像
之后再来记录吧