centos7上搭建docker私有仓库
私有仓库主机(centos7):10.60.34.46
客户机(centos7):client
私有仓库主机上:
下载registry镜像
docker pull registry
运行registry容器,为了在容器关闭时不删除仓库目录,需要把仓库目录挂载到宿主机目录
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
客户机上:
获取一个小的镜像busybox用于测试
docker pull busybox
修改busybox的标签,用于上传到私有仓库
docker tag busybox 10.60.34.46:5000/busybox
上传
docker push 10.60.34.46:5000/busybox
这里会出现错误:
Error response from daemon: unable to ping registry endpoint https://10.60.34.46:5000/v0/
v2 ping attempt failed with error: Get https://10.60.34.46:5000/v2/: EOF
v1 ping attempt failed with error: Get https://10.60.34.46:5000/v1/_ping: EOF
原因是与私有仓库的默认交互方式是https,而私有仓库主机只提供http服务。可以在客户端docker的启动配置文件中加入参数:-–insecure-registry=10.60.34.46:5000来规避这个问题。
vi /usr/lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry=10.60.34.46:5000
重启docker:
systemctl daemon-reload
service docker restart
再次上传:
[root@bogon ~]# docker push 10.60.34.46:5000/busybox
The push refers to a repository [10.60.34.46:5000/busybox] (len: 1)
Sending image list
Pushing repository 10.60.34.46:5000/busybox (1 tags)
Image cfa753dfea5e already pushed, skipping
Image d7057cb02084 already pushed, skipping
Pushing tag for rev [d7057cb02084] on {
http://10.60.34.46:5000/v1/repositories/busybox/tags/latest}
查看私有仓库:
[root@bogon ~]# curl http://10.60.34.46:5000/v1/search
{
"num_results": 2, "query": "", "results": [{
"description": "", "name": "library/centos"}, {
"description": "", "name": "library/busybox"}]}
查询镜像:
[root@bogon ~]# curl http://10.60.34.46:5000/v1/search?q=busybox
{
"num_results": 1, "query": "busybox", "results": [{
"description": "", "name": "library/busybox"}]}
获取镜像:
docker pull 10.60.34.46:5000/busybox
上传镜像报错
\[root@registry xinetd.d\]\# docker push 10.100.50.120:5000/busybox
The push refers to a repository \[10.100.50.122:5000/busybox\]
Get https://10.100.50.120:5000/v1/\_ping: http: server gave HTTP response to HTTPS client
\[root@registry xinetd.d\]\#
解决方案:
修改/etc/sysconfig/docker文件,并重新启动docker服务。
ADD\_REGISTRY='--add-registry 10.100.50.120:5000'
INSECURE\_REGISTRY='--insecure-registry 10.100.50.120:5000'
另外解决方案:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{
"insecure-registries": [
"hub.docker.jiankunking.io:5000"
]
}
//多个私服写法,逗号分隔即可
{"insecure-registries": [
"test.docker.jiankunking.io:5000",
"hub.docker.jiankunking.io:5000"
]
}
客户端添加私有仓库地址
# 添加这一行
ADD_REGISTRY='--add-registry 192.168.0.179:5000'
加上后,search镜像,私有仓库和docker hub上都会显示;
不加搜索私有仓库,需要命令中指定私有仓库ip
``
使用仓库中的镜像
查询私有仓库中的所有镜像,使用docker search命令:
curl -u myuser https://registry_ip:5000/v1/search
curl registry_ip:5000/v1/search
docker search registry_ip:5000/ #centos 7
docker search registry_ip:5000/library #centos 6
查询仓库中指定账户下的镜像,则使用如下命令:
docker search registry_ip:5000/account/
遇到的问题:
通过 curl 47.106.91.104:5000/v1/search 命令查询本地仓库镜像一直报404错误,通过docker search register发现register版本是2.0的。v2的查询命令是: curl 47.106.91.104:5000/v2/_catalog
``
``镜像迁移:解决不同主机环境下对镜像的使用
1. 可以通过`docker commit`命令提交image到本地,然后push到registry服务器上(私有的或者共有的docker hub),然后从registry服务器上拉取到本地就可以了。 2. 通过`docker export`或者`docker save`命令将容器或image保存下来,然后通过`docker import或者docker load`命令导入就可以了。 另外可以通过写dockerfile来移植,`docker build`就好。
`转载原博地址
//blog.csdn.net/jiankunking/article/details/71190814` `https://blog.csdn.net/apexlj/article/details/49076677`
https://blog.csdn.net/fgf00/article/details/52040492
还没有评论,来说两句吧...