使用官方镜像创建registry仓库容器:
下载官方registry镜像:
#docker pull registry
在本地创建registry仓库容器:
#mkdir -p /opt/data/registry #docker run -idt -p 5000:5000 --name registry -v /opt/data/registry/:/tmp/registry registry
//以上命令会创建一个名为registry的容器,并把容器中的5000端口映射到宿主机的5000端口上,并把容器中的/tmp/registry目录挂载到本地/opt/data/registry目录。
执行:
curl http://192.168.3.112:5000/v2/_catalog
能看到json格式的返回值时,说明registry已经运行起来了

//查看当前已经有的镜像 docker images
将docker.io/metabase/metabase镜像tag为192.168.3.112:5000/docker.io/metabase/metabase,并尝
试上传到本地仓库192.168.3.112:5000。
给你需要上传得镜像打上tag标记,目的:就和官方仓库一样,给出标识,防止出现重名情况
#docker tag 069b94c4ff70 192.168.3.112:5000/docker.io/metabase/metabase
上传镜像到仓库 #docker push 192.168.3.112:5000/docker.io/metabase/metabase

dockers registry V2 版本客户端默认使用https协议去push镜像到仓库服务器,而现在我们的仓库服务器只配置了支持http,所以客户端会push镜像失败(Docker的默认push是失败的,因为缺少认证。在自定义仓库的时候可以push成功)
错误消息为:http: server gave HTTP response to HTTPS client
如要希望docker客户端支持http协议,需在启动docker时加入参数 --insecure- registry your_registry_ip:port
编辑/usr/lib/systemd/system/docker.service文件
增加--insecure-registry参数

重启docker服务
systemctl daemon-reload systemctl restart docker.service
之后修改

重启docker服务
然后再push镜像,发现成功
最后查看镜像在仓库中是否存在:访问仓库地址

在dockerhub创建仓库:
登录后,创建自己的仓库

查看本地镜像

选择要上传的镜像,打上tag标记,目的:就和官方仓库一样,给出标识,防止出现重名情况
#docker tag 069b94c4ff70 192.168.3.112:5000/docker.io/metabase/metabase
上传到dockerhub的仓库:

出现上图内容,表示上传成功,可以登录查看

测试下载:

成功!
ps:
复制多次:
1.一台机器上多次拉去镜像,只会存在一个
2.只拉取一次,但是修改tag会出现多个镜像

声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!

浙公网安备 33010602011771号