本文主要是介绍搭建Docker私仓,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
搭建Docker私仓
(创作不易,如有转载请附上链接)
私有仓库Harbor搭建
私有仓库搭建的必要性
1、虽然Docker官方提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
2、很多情况需要在一个完全内网环境启用的容器化技术,这种情况就需要在公司内部的网络中搭建一个公共的docker管理私有仓库,用来管理项目中所有的镜像资源,这样管理的镜像资源才是安全的。
Harbor使命
我们的使命是成为 Kubernetes 值得信赖的云原生存储库
Harbor的主要功能
• 基于角色的访问控制
• 基于镜像的复制策略
• 图形化用户界面
• 支持 AD/LDAP
• 镜像删除和垃圾回收
• 审计管理
• RESTful API
下载与安装
官方提供的演示服务器
Harbor团队提供了一个演示Harbor实例,您可以使用它来试验 Harbor 并测试其功能。
-
转到 https://demo.goharbor.io。
-
单击注册帐户。
-
通过提供用户名、电子邮件地址、姓名和密码来创建用户帐户。
-
使用您创建的帐户登录 Harbor 界面。
-
默认有几个项目
-
单击“ 新建项目”以创建您自己的项目。
新建一个ceshi-repo项目
可以设置访问级别,点击确定后,项目就算创建完成 -
打开安装了docker的客户端,通过docker login 测试服务器(域名/IP:端口)。
-
创建一个Dockerfile构建一个镜像并且设置号标签
docker build –t 镜像名称 .
通过上面名称格式构建一个本地镜像,注意”.”这个构建方式,需要当前目录存在Dockerfile文件
docker build -t demo.goharbor.io/项目名/test-image .
我的具体命令如下:
docker build -t demo.goharbor.io/ceshi-repo/test-image .
通过docker images查看
说明当前本地镜像仓库已经存在刚才构建好的镜像资源了 -
将刚才构建好的镜像资源push到远程仓库服务器(前提是已经7步骤登录成功)
docker push 镜像名称
如上图结果说明push成功,我们可以再回到Harbor页面查看,可以看到刚上传的镜像资源信息
下载与安装自己的Harbor服务器
分类
安装分为两大类:在线安装程序和离线安装程序
在线安装程序:在线安装的程序从Docker hub下载harbor镜像。资源包比较小,前提这种安装方式能够链接外网。
离线安装程序:如果部署的机器没有链接外网的条件,必须使用该种安装方式,下载的安装包包含了所有需要的资源,资源包比较大。
但是不管离线还是在线安装。它们的安装过程几乎相同的
下载资源
下载地址:https://github.com/goharbor/harbor/releases
我使用的是离线的版本
安装
1、 解压下载好的安装包
2、服务访问安全性保障(可选)
默认情况下,Harbor 不附带证书。可以在没有安全性的情况下部署 Harbor,以便您可以通过 HTTP 连接到它。但是,仅在没有连接到外部 Internet 的气隙测试或开发环境中才可接受使用 HTTP。在非气隙环境中使用 HTTP 会使您面临中间人攻击。在生产环境中,始终使用 HTTPS。如果您启用 Content Trust with Notary 以正确签署所有图像,则必须使用 HTTPS。
要配置 HTTPS,您必须创建 SSL 证书。您可以使用受信任的第三方 CA 签署的证书,也可以使用自签名证书。本节介绍如何使用 OpenSSL创建 CA,以及如何使用您的 CA 签署服务器证书和客户端证书。您可以使用其他 CA 提供商,例如 Let’s Encrypt。
以下过程假设您的 Harbor 注册表的主机名是test.com,并且其 DNS 记录指向您运行 Harbor 的主机。
2.1、如何生成证书颁发机构证书
在生产环境中,您应该从 CA 获取证书。在测试或开发环境中,您可以生成自己的 CA。要生成 CA 证书,请运行以下命令。
2.1.1、生成CA证书私钥
openssl genrsa -out ca.key 4096
2.1.2、生成CA证书
调整-subj选项中的值以反映您的组织。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为公用名 ( CN) 属性
openssl req -x509 -new -nodes -sha512 -days 3650
-subj “/C=CN/ST=Hangzhou/L=Hangzhou /O=example/OU=Personal/CN=test.com”
-key ca.key
-out ca.crt
2.2、生成harbor服务器证书
2.2.1、生成私钥
openssl genrsa -out test.com.key 4096
注意红色部分为设置的主机名
2.2.2、生成证书签名请求 (CSR)
openssl req -sha512 -new -subj “/C=CN/ST=Hangzhou/L=Hangzhou/O=example/OU=Personal/CN=test.com”
-key test.com.key
-out test.com.csr
2.2.3、生成 x509 v3 扩展文件
无论您是使用 FQDN 还是 IP 地址连接到您的 Harbor 主机,您都必须创建此文件,以便为您的 Harbor 主机生成符合主题备用名称 (SAN) 和 x509 v3 的证书扩展要求。替换DNS条目以反映您的域。
2.2.4、使用该v3.ext文件为您的 Harbor 主机生成证书
2.3、将生成的harbor服务器证书提供给Harbor与docker(和2.2一样可选2.2选择了,该步骤也要执行)
生成后ca.crt,test.com.crt和test.com.key文件,必须将它们提供给docker和Harbor,和重新配置Harbor。
2.3.1、 将服务器证书和密钥复制到 Harbor 主机上的 certficates 文件夹中。
cp test.com.crt /data/cert/
cp test.com.key /data/cert/
如果/data/目录下没有cert文件夹则创建一个cert文件夹
2.3.2、 转换test.com.crt为test.com.cert,供 Docker 使用。Docker 守护进程将.crt文件解释为 CA 证书,将.cert文件解释为客户端证书。
openssl x509 -inform PEM -in test.com.crt -out test.com.cert
2.3.3、 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。有的文件夹不存在需要手动去先创建
cp test.com.cert /etc/docker/certs.d/test.com/
cp test.com.key /etc/docker/certs.d/test.com/
cp ca.crt /etc/docker/certs.d/test.com/
2.4、 重启 Docker 引擎
systemctl restart docker
2.5、 证书配置最终目录(HTTPS方式配置后)
/etc/docker/certs.d/└── test.com:port├── test.com.cert <-- Server certificate signed by CA├── test.com.key <-- Server key signed by CA└── ca.crt <-- Certificate authority that signed the registry certificate
3、配置HTTPS访问Harbor
3.1、 运行prepare脚本以启用 HTTPS(HTTPS方式)
在上述步骤的安装包下面有一个prepare脚本, Harbor 使用一个nginx实例作为所有服务的反向代理。您可以使用prepare脚本进行配置nginx以使用 HTTPS。该prepare在港的安装包,在同级别的install.sh脚本。
第一次运行发现报错,后面排查到需要将之前生成的证书路径配置进来
将之前生成好的私钥完整路径和证书的完整路径配置好
4、配置Harbor yml文件
场景一:将hostname改成test.com(https访问方式,域名方式)
场景二:将hostname改成主机IP(http方式),注意要将https的部分注释掉(如何提供出去http方式是不安全的,不建议使用)
运行安装程序脚本
直接运行安装程序时,报错如下
提示先要安装docker-compose
安装docker-compose(这块需要离线安装,去官网下载对应的安装包,查阅对应的离线安装方法,我这里就不单独去演示了,我的可以直接链接外网)
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
配置权限
chmod +x /usr/local/bin/docker-compose
查看是否安装成功没
再次运行
自此安装成功了,可以通过https://test.com/可以直接访问
因为我的是在腾讯云上面部署的,需要去配置下(哈哈:TMD 这个test.com的域名已经被申请了,还不能在腾讯云上配置,算了我放弃了,大家记住如果是公有云需要配置域名信息的,要去申请域名的),不然只能通过http://服务地址:443访问,好吧我就通过这个方式的
配置好后可以访问如下:
默认用户名:admin 密码:Hardor12345
登录进去后和官方演示的一摸一样
因为不是通过域名访问,没有进行认证所以拒绝访问了
管理harbor服务的启动与暂停
关闭:
docker-compose down -v
开启:
docker-compose up -d
这篇关于搭建Docker私仓的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!