docker创建私有镜像仓库搭建教程
我的环境相关设置如下
环境:ubuntu 16.04
IP地址:10.78.115.167
docker版本:17.03.2~ce-0~ubuntu-xenial
首先在10.78.115.167机器上下载registry镜像
$ docker pull registry
下载完之后我们通过该镜像启动一个容器
$ docker run -d -p 5000:5000 registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,我将/opt/data/registry目录挂载到/tmp/registry目录下,如果你本地没有这个目录需要新创建,同时需要给/opt/data/registry目录扩大权限
chmod +777 /opt/data/registry
此处有坑:默认情况下是在容器内的/tmp/registry目录下,但是我的容器镜像是存放在容器中的/var/lib/registry 这个位置。
我是搭建完毕之后,上传一个镜像之后然后使用 find / -name ***查到的位置
[[email protected] ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 55c60589cb0e2d094d5371c4dd650127cfeae1b361477d50cfe48552e6308830
可以看到我们启动了一个容器,地址为:10.78.115.167:5000。
测试
接下来我们就要操作把一个本地镜像push到私有仓库中。首先在10.78.115.167机器下pull一个比较小的镜像来测试(此处使用的是busybox)
$ sudo docker pull busybox
接下来修改一下该镜像的tag,镜像的格式为 镜像仓库IP:端口/镜像名称
$ sudo docker tag busybox 10.78.115.167:5000/busybox
接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 10.211.55.30:5000/busybox
可以看到push失败,具体错误如下:
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。
注意修改--incecure-registry参数。
ubuntu可配置/etc/docker/daemon.json:
"insecure-registries": ["10.78.115.167:5000"]
转载自:http://www.jb51.net/article/104545.htm