zhihuifan

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
使用官方镜像创建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会出现多个镜像

 

 

 

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

 

posted on 2024-06-05 15:18  Hi,ZHF  阅读(54)  评论(0)    收藏  举报