一、简介
在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是 Docker 公司为我们提供的公共仓库。在工作中,我们不可能把企业项目 push 到公有仓库进行管理。所以为了更好的管理镜像,Docker 不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。
二、registry 的搭建
1. 搭建
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。
docker pull registry:2
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Registry 服务默认会将上传的镜像保存在容器的 /var/lib/registry,我们将主机的 /opt/registry 目录挂载到该目录,即可实现将镜像保存到主机的 /opt/registry 目录了。
浏览器访问 http://127.0.0.1:5000/v2
,出现下面情况说明 registry 运行正常。
2. 验证
现在通过 push 镜像到 registry 来验证一下。
查看本地镜像:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 568c4670fa80 5 weeks ago 109MB
ubuntu latest 93fd78260bd1 7 weeks ago 86.2MB
elasticsearch 6.5.1 32f93c89076d 7 weeks ago 773MB
要通过 docker tag
将该镜像标志为要推送到私有仓库:
docker tag nginx:latest localhost:5000/nginx:latest
通过 docker push
命令将 nginx 镜像 push 到私有仓库中:
docker push localhost:5000/nginx:latest
访问 http://127.0.0.1:5000/v2/_catalog
查看私有仓库目录,可以看到刚上传的镜像了:
下载私有仓库的镜像,使用如下命令:
docker pull localhost:5000/镜像名:版本号
例如:
docker pull localhost:5000/nginx:latest
3. 跳过 HTTPS 验证
我们在本机可以通过仓库地址 localhost:5000
进行 push 操作,如果局域网中的其他主机想 push 镜像到本机,就要换成类似 192.168.199.100:5000
这样的地址,这时你会发现无法成功推送镜像。
因为 Docker 默认不允许非 HTTPS 方式推送镜像,我们可以通过 Docker 的配置选项来取消这个限制。
对于使用 Linux 系统的用户,请在 /etc/docker/daemon.json
中把私有仓库地址加入到 insecure-registries
列表,如:
{
"registry-mirror": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
],
"insecure-registries": [
"192.168.199.100:5000"
]
}
对于 Windows 、 Mac 在设置中的 Docker Engine 中进行编辑 ,增加和上边一样的字符串即可。
快来评论一下吧!
发表评论