千家信息网

私有镜像库构建攻略

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,上篇文档中,我已经详细介绍了如何快速简单的部署Rancher Server,启用Github认证以及数据保持方便后续的升级操作。在这篇文档中,我将梳理下如何创建一个有密码保护的私有Docker Reg
千家信息网最后更新 2026年11月02日私有镜像库构建攻略

上篇文档中,我已经详细介绍了如何快速简单的部署Rancher Server,启用Github认证以及数据保持方便后续的升级操作。在这篇文档中,我将梳理下如何创建一个有密码保护的私有Docker Registry以及如何和Rancher整合。我们将下载一个容器镜像,为其设置标签并推送至此Registry。最后,我们将通过Rancher Server部署此容器镜像。


虽然我建议大家使用AWS S3,但是我在此将使用registry:2,把所有的数据存放在主机本地。

我们需要提前准备如下工作:

  • 域名所对应的证书,我将使用regv2.piel.io

  • 一个兼容.htaccess的密码

我将通过letsencrypt.org以及一个Docker脚本来快速创建第一个证书。

  • 复制 git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git

  • 修改docker-letsencrypt-nginx-proxy-companion-examples/dockerdocker-run/simple-site/docker-run.sh,将site.example.com修改为你将使用的域名

  • 运行脚本

$ git clone git@github.com:fatk/docker-letsencrypt-nginx-proxy-companion-examples.git$ cd docker-letsencrypt-nginx-proxy-companion-examples# Modify the script and replace site.example.com $ vi dockerdocker-run/simple-site/docker-run.sh$ ./docker-run.sh


脚本运行后,将启动一个nginx实例,一个docker-gen实例,一个letsencrypt-nginx-proxy-companion实例以及最终的nginx实例。

我们来看下脚本运行成功后有哪些容器启动了:



看上去已经成功了,但是我们刚刚创建的证书在哪儿?

$ ls volumes/proxy/certsdhparam.pem  regv2.piel.io  regv2.piel.io.crt  regv2.piel.io.dhparam.pem  regv2.piel.io.key


以及:

$ ls volumes/proxy/certs/regv2.piel.ioaccount_key.json  cert.pem  fullchain.pem  key.pem


很好,接下来我们可以将regv2.piel.io.key以及fullchain.pem用于容器registry:2.

下面我们创建registry可以访问到的证书目录

$ mkdir -p /data/docker-registry-certs$ cp volumes/proxy/certs/regv2.piel.io.key /data/docker-registry-certs/$ cp volumes/proxy/certs/regv2.piel.io/fullchain.pem /data/docker-registry-certs/$ mkdir /data/docker-registry-auth$ mkdir /data/docker-registry


最后一步,创建访问registry的用户名和密码,此为访问docker registry:2的最低安全措施配置。

$ docker run --entrypoint htpasswd registry:2 -Bbn pieltestuser \"mkakogalb47" > /data/docker-registry-auth/htpasswd


该命令要求主机上已经存在registry:2 镜像,所以在运行htpasswd命令前它会自动下载此镜像。之后,此容器会自动停止。

检查下htpasswd是否已经被创建:

$ cat /data/docker-registry-auth/htpasswdpieltestuser:$2y$05$w3IqOzTdsDbot9ls1JpeTeHYr/2vv.PTx3dObRvT.JkfGaygfTkJy


最后,运行registry:2

$ docker run -d -p 5000:5000 --restart=always --name docker-registry \  -v /data/docker-registry:/var/lib/registry \  -v /data/docker-registry-auth:/auth \  -e "REGISTRY_AUTH=htpasswd" \  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \  -v /data/docker-registry-certs:/certs \  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" \  -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" \  registry:2 $ docker run -d -p 5000:5000 --restart=always --name docker-registry \  -v /data/docker-registry:/var/lib/registry \  -v /data/docker-registry-auth:/auth \  -e "REGISTRY_AUTH=htpasswd" \  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \  -v /data/docker-registry-certs:/certs \  -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/fullchain.pem" \  -e "REGISTRY_HTTP_TLS_KEY=/certs/regv2.piel.io.key" registry:2


我们试一下是否可以登陆:

$ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000$ docker login -u pieltestuser -p "mkakogalb47" -e wayne@wayneconnolly.com regv2.piel.io:5000WARNING: login credentials saved in /root/.docker/config.jsonLogin Succeeded


接下来我们试下是否可以下载、标记、上传容器镜像至我们的新镜像仓库。例如,下载一个jenkins https://hub.docker.com/_/jenkins/

$ docker pull jenkins$ docker tag jenkins:latest regv2.piel.io:5000/piel-jenkins:latest


验证下是否可用


很好,上传到我们的镜像仓库。

$ docker push regv2.piel.io:5000/piel-jenkins:latest


直到写这篇文章的时候,除了用Curl,还没有很好的方法可以直接看到镜像库中的镜像列表

$ curl -u pieltestuser:mkakogalb47 https://regv2.piel.io:5000/v2/_catalog{"repositories":["piel-jenkins"]}


可以通过JSON看到我们的新Jenkins镜像在我们的私有镜像库中

现在可以在我们的Rancher-test.piel.io环境中应用我们的registry了。

登陆Rancher,在基础架构 > 主机中点击添加主机。

将自动生成的命令在Rancher Host上运行。

$ sudo docker run -e CATTLE_AGENT_IP='45.32.190.15'  \  -d --privileged \  -v /var/run/docker.sock:/var/run/docker.sock \  -v /var/lib/rancher:/var/lib/rancher \  rancher/agent:v1.0.1 http://rancher-test.piel.io/v1/scripts/FF42DCE27F7C88BD7733:1461042000000:ryU0BaXJFo6c9zuHgeULdAtbCE$ sudo docker run -d --privileged \  -v /var/run/docker.sock:/var/run/docker.sock \  -v /var/lib/rancher:/var/lib/rancher \   rancher/agent:v0.11.0http://rancher.piel.io/v1/scripts/BE455B92EA48EA1C1F12:1461042000000:mi433ChYRN9nfQSwB2FIlBnpPk


一两分钟后主机将在Rancher管理界面中出现。由于我还没有配置主机信息,主机显示名称依然为"vultr.guest", 我们可以通过菜单修改主机名称并添加标签。


接下来,我们添加私有registry并在新增加的主机上部署Jenkins。

在基础架构菜单 > 镜像库中点击"添加镜像库",并选择自定义,添加相应的信息完成配置。

几分钟之后,Rancher server的私有镜像仓库就可以使用了。

下面让我们部署Jenkins容器。在基础架构 > 容器菜单中,点击"添加容器"

填写所需信息,在选择p_w_picpath一处输入regv2.piel.io:5000/piel-jenkins: latest并设置端口映射为Jenkins 8080到主机的80端口。


此处将需要一点时间下载镜像。

下面我们将看到我们又一个容器叫做"my-jenkins"已经启动了。


访问到Jenkins URL,http://regv2.piel.io。


通过docker ps再确认一次:


成功!我们现在已经完成了:

创建并加密了我们自己的私有镜像库

添加并标记了一个容器镜像

为Rancher Server添加了一个主机

为Rancher Server增加了一个私有镜像库

在主机上部署了一个Jenkins容器

确认容器已经部署成功

注意:在本教程中使用的服务器现在已经退役啦。

原文来源:Rancher Labs



镜像 容器 主机 私有 运行 成功 实例 证书 接下来 仓库 信息 命令 基础 密码 架构 脚本 菜单 配置 可以通过 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 科技互联网龙头 中资互联网科技 与互联网科技公司 互联网 的科技创新 中国最先进互联网科技公司 农村开互联网科技讲堂 互联网科技产品 贵州叶脉互联网科技有限公司所属行业 武汉健翔互联网络科技有限公司 互联网保险科技创业 爱医互联网络科技 美国互联网科技实力 广州千川互联网科技有限公司 厦门江牛科技互联网 互联网硬科技公司 全球科技与互联网公司市值变化 北京军民互联网科技公司 中国主要互联网科技公司 小牛互联网科技有限公司地址 科技互联网技术 盛创互联网科技有限公司 太原新华互联网科技学校怎么样 中国互联网有什么科技含量 昭通云南众福互联网科技有限公司 湖北码尼互联网科技有限公司电话 江阴互联网智能科技产品进口 互联网科技手抄报图片 互联网领先科技活动 北京瑞云互联网科技有限公司
0