Docker - 搭建Docker私有仓库(本地Registry镜像仓库)

作者: hangge 发布时间: 2019-09-06 浏览: 2267 次 编辑

    Docker Hub 虽然方便,但还是有些限制。比如:需要 Intenet 连接,上传下载慢。而且上传到 Docker Hub 的镜像任何人都能访问到(虽然也提供私有 repository,但需要收费),有安全性问题。

    好在 Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry。下面演示如何在 Docker 中运行自己的 registry,搭建本地 Registry

1,启动 registry 容器 

(1)这里我们使用的镜像是 registry:2,执行如下代码会自动下载并启动:

参数说明:

  • -d:后台启动容器

  • -p:将容器的 5000 端口映射到 Host 的 5000 端口(5000 是 registry 服务端口)。

  • -v:将容器 /var/lib/registry 目录映射到 Host 的 /myregistry,用于存放镜像数据。

1
docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)


(2)接着执行下面命令配置 firewalld 防火墙策略:

1
2
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload


(3)最后访问 http://主机IP:5000/v2,如果返回如下内容则说明 registry 已经启动成功了。

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)


2,重命名镜像

镜像的名称由 repository 和 tag 两部分组成。

  • repostory 的完整格式为:[registry-host]:[port]/[username]/xxx

  • 只有 Docker Hub 上的镜像可以省略 registry-host:[host] ,如果使用我们搭建的私有仓库则不能省略。

    我们在另一台客户机上通过 docker tag 命令重命名镜像(在镜像前面增加运行 registry 的主机名称和端口),使之与 registry 匹配:

1
docker tag hangge_server 192.168.60.128:5000/hangge/hangge_server:v1


3,上传镜像

(1)镜像重命名后,客户机这边通过 docker push 命令上传镜像:

1
docker push 192.168.60.128:5000/hangge/hangge_server:v1


(2)上面命令执行后可能会报“http: server gave HTTP response to HTTPS client”错误。

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)


(3)这是因为 Docker从1.3.X 之后,与 docker registry 交互默认使用的是 https,然而我们前面搭建的私有仓库只提供 http 服务,所以当与私有仓库交互时就会报上面的错误。

    为了解决这个问题需要在启动 docker server 时增加启动参数为默认使用 http 访问。我们执行如下命令修改“客户机”这边 docker 启动配置文件:

1
vi /usr/lib/systemd/system/docker.service


(4)找到 ExecStart,按下 键在其末尾添加如下内容(IP 则为 registry 主机的 IP):

1
--insecure-registry 192.168.60.128:5000

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)

(5)编辑完毕后按下 esc 退出编辑模式。 接着组合按下 shift + : 开启命令,然后输入 wq 回车,保存退出。

(6)最后执行如下两个命令重启 docker

1
2
systemctl daemon-reload
systemctl restart docker

(7)我们再次通过 docker push 命令上传镜像,可以发现镜像已经成果上传到仓库:

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)


4,查看镜像

我们访问 http://主机IP:5000/v2/_catalog,即可看到当前仓库里的所有镜像:

原文:Docker - 搭建Docker私有仓库(本地Registry镜像仓库)


5,下载镜像

客户机同样使用 docker pull 从本地 registry 下载镜像,除了镜像名称长一些,使用方式同 Docker Hub 下载镜像完全一样:

1
docker pull 192.168.60.128:5000/hangge/hangge_server:v1


原文链接:https://www.hangge.com/blog/cache/detail_2410.html