如果使用过Docker 官方提供 Docker Registry 搭建过容器仓库,会发现功能比较简单,仅提供的基本镜像上传、下载和删除等操作,还提供了一些管理操作的API。今天介绍一个功能更完整的搭建镜像仓库的项目,它叫Harbor 。以下为简单介绍,
Harbor 是一个开源的 Registry 服务器。 VMware 维护的一个项目,专为私有部署设计,提供了高级的安全性和管理功能,比如镜像复制、访问控制、镜像签名、扫描镜像中的安全漏洞等功能。Harbor 通过添加身份验证、策略控制、审计、安全扫描等功能扩展了开源 Docker Distribution 平台,使其更适合搭建私有镜像仓库使用。
Harbor 内置了一个Web UI,通过浏览器访问,进行管理。如下图
如果你正在寻找更合适的私有 Docker Registry 的解决方案,Harbor 是一个值得考虑的选择。Harbor功能相比官方提供的 Docker Registry 镜像功能更加丰富,提供了更多的开箱即用的功能。
安装 Harbor
下面进行安装演示,安装需要系统为 Linux,并且已安装 Docker、Docker Compose。我这里使用虚拟机进行安装。配置为2 core 2 G ram。硬盘大小,测试用随意,如20G即可。实际可根据镜像存储规模进行磁盘规划。演示安装版本为最新:v2.9.4。当版本不同时,请参考官方文档,阅读差异。避免踩坑,出不来。
-
进入 Harbor 官网首页
-
点击首页
Download now
按钮 -
等待跳转至 Github
4. 下载安装包。提供了两种安装方式,在线(online)与离线(offline)。我这里选择harbor-offline-installer-v2.9.4.tgz ,在 Linux 运行如下命令进行开始下载,稍等片刻,等待下载完成
➜ ~ wget https://github.com/goharbor/harbor/releases/download/v2.9.4/harbor-offline-installer-v2.9.4.tgz
进行解压,使用tar
命令解压,如下,
➜ ~ tar zxvf harbor-offline-installer-v2.9.4.tgz harbor/
harbor/harbor.v2.9.4.tar.gz
harbor/prepareharbor/LICENSEharbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl
进入 harbor 目录
➜ ~ cd harbor
➜ harbor ls
common.sh harbor.v2.9.4.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
复制一份默认配置文件,harbor.yml.tmpl
为默认配置模板,使用cp
命令
➜ harbor cp harbor.yml.tmpl harbor.yml
配置文件harbor.yml
包含了安装 Harbor 镜像仓库的所使用的自定义配置。http端口、https端口及证书、域名、及容器的运行参数、登录 Web UI 的管理员密码等。默认管理员为admin,以下节选为部分配置内容
clients.hostname: reg.mydomain.com // Harbor服务的访问域名,替换为你的
http: port: 80 // http 访问端口
https: port: 443 // https 访问端口
certificate: /your/certificate/path // 证书路径,替换为你的
private_key: /your/private/key/path // 私钥路径,替换为你的
harbor_admin_password: Harbor12345 // 登录 Web UI 的管理员密码
配置好,便可以开始安装了
9. 开始安装,以root用户身份,运行install.sh脚本进行安装。脚本会进行检查 Docker 、Docker Compose 是否满足安装条件,拉取所需镜像,最后会使用 Docker Compose 启动 Harbor 服务。
10. 完成,登录浏览器,访问。配置文件中的hostname: reg.mydomain.com
,使用reg.mydomain.com
访问
安装过程的注意事项:
https:
当提供https服务,请正确配置证书。不需要,删除https部分。
hostname:
hostname
要DNS可查询到。
端口占用:
当端口已被其他服务占用,可替换为其他未使用的端口,重新安装。比如:443占用了,可以写8443。
**如:**当端口设置为8443,访问需要增加端口号,如:
reg.mydomain.com:8443
如果想通过443访问,可在nginx中反向代理访问reg.mydomain.com:443时,代理到reg.mydomain.com:8443。
发现拉取,推送地址是reg.mydomain.com:8443,可以通过修改配置文件中的
# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
https://reg.mydomain.com:443 // 取消注释,修改为你的访问地址
自签证书:
自签证书,需修改 Docker 配置文件 /etc/docker/daemon.json
,如下,
➜ harbor cat /etc/docker/daemon.json
{
"insecure-registries": ["hub.x.cn"] // 信任 hub.x.cn
}
创建一个目录/etc/docker/certs.d/hub.x.cn
,把证书放里面。
之后,重启下 Docker ,命令如下
systemctl daemon-reloadsystemctl restart docker
就可以通过hub.x.cn
,推送、拉取镜像了。
关于 Harbor 的介绍就到这里。选择哪个取决于你的具体需求,Docker Registry 和 Harbor 都可以用于存储和分发 Docker 镜像的私有仓库服务,当你需要一个开箱即用的仓库服务时,选择 Harbor 更为适合。
读完后,忍不住要加个关注!不是我吹,但你会后悔没关注的!
公众号:字节码在跳舞