废话少说,直接上来就是操作步骤,简单明了。
Docker 私有仓库
1、安装步骤
1.1、直接从公共库上面下载register镜像在本地执行
# docker run-d -p 5000:5000 --name registry -v /opt/data/registry:/tmp/registry registry
注:docker默认的仓库镜像信息在/var/lib/registry中,所以在启动仓库时用这个目录
# docker run-d -p 5000:5000 --name registry -v opt/data/registry:/var/lib/registry registry
1.2、接下来我们就要操作把一个本地镜像push到私有仓库中。首先在客户机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
# sudo docker pull busybox
1.3、修改该镜像tag
# docker tagdocker.io/busybox 192.168.8.2:5000/busybox
1.4、接下来把打了tag的镜像上传到私有仓库
# docker push192.168.8.2:5000/busybox
注:因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改客户机器的配置)Ubuntu下配置文件地址为:/etc/init/docker.conf,在其中增加–insecure-registry192.168.8.2:5000如下所示:
解决方案:
# sudo vi/etc/init/docker.conf
或是添加到docker的daemon.json中,如:
insecure-registries
修改/etc/sysconfig/docker文件,并重新启动docker服务。
ADD_REGISTRY='--add-registry10.100.50.120:5000'
INSECURE_REGISTRY='--insecure-registry 10.100.50.120:5000'
之后重启docker
注:其中的10.100.50.120是你的私有仓库的地址,我用的是:192.168.8.2以上IP是我们做其它测试给的IP,根据实际情况进行修改即可。
1.5、重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。
# dockerpush 192.168.8.2:5000/busybox
2、在私人仓库里面搜索镜像也出错:Unexpected status code 404 #搜索docker镜像的时候返回404错误,找不到镜像。
dockersearch 192.168.8.2:5000/busybox
查看官方文档,当前版本不支持搜索,可以利用V2版本尝试。
# docker run-d -p 5000:5000 --name registry -v /opt/data/registry:/tmp/registry registry:2
还是不能提供搜索功能,同样不能搜索,还是一样的错误。官方文档说的是,可以支持API。尝试一下
# curlhttp://192.168.8.2:5000/v2/_catalog
# curlhttp://192.168.8.2:5000/v2/image_name/tags/list
http://192.168.8.2:5000/v2/_catalog