Docker 私有仓库搭建
在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。这一篇介绍registry、harbor两种私有仓库搭建。
registry 的搭建
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。
# 下载镜像
docker pull registry:2
# 创建并运行容器
# 创建挂载目录
mkdir -p /mnt/d/dockerv/registry
docker run -d -v /mnt/d/dockerv/registry:/var/lib/registry -p 15000:5000 --name myregistry registry:2
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。
浏览器访问http://127.0.0.1:15000/v2,出现下面情况说明registry运行正常。
验证
推送一个镜像到服务器上
#打包镜像
docker tag nginx:latest 192.168.110.106:15000/nginx:latest
docker push 192.168.110.106:15000/nginx:latest
#结果报错了
The push refers to repository [192.168.110.106:15000/nginx]
Get https://192.168.110.106:15000/v2/: http: server gave HTTP response to HTTPS client
报错的意思是说
因为客户端push的时候采用https协议,而registry未使用https导致的。
解决办法
如果你的harbor服务器是http访问,那么修改registry为http
vim /etc/docker/daemon.json
#修改为,增加一个key insecure-registries即可
{
"registry-mirrors": ["https://rjt23nxt.mirror.aliyuncs.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"},
"insecure-registries":["192.168.110.106:15000","registry-docker.dlanqi.com"]
}
# 重启 docker
systemctl daemon-reload
systemctl restart docker
再次执行
docker push 192.168.110.106:15000/nginx:latest
The push refers to repository [192.168.110.106:15000/nginx]
9d1af766c818: Pushed
d97733c0a3b6: Pushed
c553c6ba5f13: Pushed
48b4a40de359: Pushed
ace9ed9bcfaf: Pushed
764055ebc9a7: Pushed
latest: digest: sha256:1c70a669bbf07f9862f269162d776c35144b116938d1becb4e4676270cff8f75 size: 1570
成功了,查看下浏览器
http://192.168.110.106:15000/v2/_catalog
输出结果为
{“repositories”:[“nginx”]}
看到了这个仓库了
查看镜像版本
http://192.168.110.106:15000/v2/nginx/tags/list
harbor 的搭建
docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。
下载
地址:https://github.com/goharbor/harbor/releases 本文是有 v1.2.2
解压下载的安装包 harbor-offline-installer-v1.2.2.tgz