关于 Docker 系列其他文章的传送门
-
《 使用 Harbor 创建本地 Docker 仓库 》 您当前所在位置

制作本地仓库¶
在运行着大量容器的环境里,制作本地镜像仓库,除了能缓解互联网出口的压力,还能更快的启动容器。
本文介绍 2 个制作镜像仓库的软件:
1. docker-distribution
2. Harbor
这两个软件有什么不同呢,首先 docker-distribution 是一个非常简单仓库,没有认证和隔离机制,其内部只有一个顶级仓库,是一个大平层,只适合自己简单使用。
正是因为 docker-distribution 太简陋,不太适合做企业级应用,所以就有了第三方组织(vmware 中国)在 docker-distribution 的基础上做了二次研发,并作为独立的项目开源了,后捐给了 “CNCF”,这就是 Harbor。
如果想了解 CNCF 是什么组织,以及 Docker 公司和 Google、CNCF 之间的“爱恨情仇”,戳这里
一、docker-distribution¶
先介绍第一种软件的使用方法。
1. 安装软件¶
1 | yum install docker-distribution |
查看都安装了哪些文件。
rpm -ql docker-distribution
1 | /etc/docker-distribution/registry/config.yml # 配置文件 |
查看配置文件。
vim config.yml
1 | version: 0.1 # 版本 |
2.配置服务¶
启动 docker-distribution 服务。
1 | systemctl start docker-distribution |
把镜像改成这样格式的名字,因为不存在账号机制,所有都是顶级仓库:
仓库地址/镜像名:TAG
1 | docker tag centos:7.6.1810 192.168.50.11:5000/centos:1 |
推送镜像,提示 http: server gave HTTP response to HTTPS client,这是因为 docker 客户端默认只允许使用 HTTPS 的协议传输。
1 | ~ ]# docker push 192.168.50.11:5000/centos:1 |
解决办法:
编辑 /etc/docker/daemon.json 文件,或许需要创建,添加一个字段,指明不安全的仓库。
1 | { "insecure-registries":["192.168.50.11:5000"] } |
重启 docker 服务。
1 | systemctl start docker |
3. 推送镜像¶
再次推送镜像,成功。
1 | ~ ]# docker push 192.168.50.11:5000/centos:1 |
本地服务器的仓库目录已经可以看到刚上传的镜像了,是分层存放的。
1 | # tree /var/lib/registry |
4. 下载镜像¶
pull 一下这个镜像试试,可以下载,私有仓库就完成了。
1 | ~ ]# docker pull 192.168.50.11:5000/centos:1 |
二、Harbor¶
1. 下载 Harbor¶
Harbor 项目地址:https://github.com/goharbor/harbor
可以通过以下两种方法之一安装:
在线安装:安装程序从 Docker hub 下载 Harbor 的图像。因此,安装程序的尺寸非常小。
脱机安装:当主机没有 Internet 连接时使用此安装程序。安装程序包含预先构建的图像,因此其更大。
在这里找到最新的二进制程序,https://github.com/goharbor/harbor/releases
当前版本:V1.8.1
- 在线安装二进制下载地址。
https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz - 离线安装二进制下载地址。
https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz - 两个不一样:
online和offline
解压缩:
1 | tar xvf harbour-offline-installer-< version >.tgz |
2. 配置 Harbor¶
配置参数位于文件 harbor.yml 中。
必须参数:
hostname:目标主机的主机名。它应该是目标计算机的 IP 地址或完全限定的域名(FQDN),例如:192.168.1.10或reg.yourdomain.com。不要使用localhost或127.0.0.1作为主机名;data_volume:Harbor 数据的存储位置;harbor_admin_password:管理员的初始密码。此密码仅在 Harbor 首次启动时生效。请注意,默认用户名/密码为admin / Harbor12345;database:与本地数据库相关的配置。password:默认数据库密码为root123,应该改为一个安全的生产环境密码。
可选参数:
http:port:你的 http 的端口号。
https:启用 https 协议。如果启用了秘钥,则必须设置为https。port:https 的端口号。certificate:SSL 证书的路径,仅在协议设置为 https 时应用。private_key:SSL 密钥的路径,仅在协议设置为 https 时应用。
3. 安装 Harbor¶
配置好后执行 ./install.sh 安装,提示需要 docker-compost。
1 | ./install.sh |
安装 docker-compost 后再次执行。
1 | yum install docker-compose -y && ./install.sh |
由于 Harbor 也是由一组容器构成,包括 redis、nginx 等,安装过程会下载很多镜像,并启动很多容器,等脚本执行完后,看到提示这面这样就说明安装完毕了。
1 | ✔ ----Harbor has been installed and started successfully.---- |
4. 注册和创建仓库¶
访问 http://192.168.50.11 就看到登录界面了,我们假如是其他部门的员工,要使用镜像,和 DockerHub 一样,首先注册一个测试账号。

使用刚才注册的用户登录。

在 项目 中创建一个新的公开镜像仓库 testproject。

点击 推送镜像,可以看到推送到此仓库的格式。

5. 推送镜像¶
我们使用此格式,从 另一台 机器推送镜像。
docker tag SOURCE_IMAGE[:TAG] 192.168.50.11/testproject/IMAGE[:TAG]
docker push 192.168.50.11/testproject/IMAGE[:TAG]
由于我们没有使用 https 安全连接,先配置 docker 添加这个仓库为不安全。
1 | cat /etc/docker/daemon.json |
使用刚才的账户 testuser 登录。
1 | docker login 192.168.50.11 |
更改要推送镜像的 TAG。
1 | docker tag centos:7 192.168.50.11/testproject/centos:test |
推送镜像。
1 | docker push 192.168.50.11/testproject/centos:test |
然后在 Harbor web 控制台中已经可以看到刚才上传的镜像了,私有本地仓库就创建好了,后期我们可以使用 admin 账户来管理。
并且在生产环境中,建议加入证书,使用 https 协议通信,为了防止单点故障,可以使用分布式存储如 Ceph 作为后端存储。

参考:
官方安装和配置指南
7 月就是热…
