Harbor是VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。使用Harbor可以部署企业自己的私有仓库,将一些核心镜像与软件与外部网络进行隔离与防护。
1. 环境准备 本次在腾讯云ECS服务器上部署Harbor私有仓库,系统与相关信息如下。
硬件信息:
资源
容量
描述
CPU
2 核
4 CPU is preferred
内存
2 GB
8GB is preferred
磁盘
50 GB
160GB is preferred
网络
2 Mbps
4Mbps is preferred
软件信息:
注意:Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,因此需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。
2. 安装Docker与Docker-Compose 2.1 安装Docker
2.2 启动Docker
2.3 安装Docker-Compose
2.4 配置证书与密钥 通过OpenSSL工具生成自签名的证书,后面将用于对请求进行校验。官方指南参考:Configuring Harbor with HTTPS Access
首先找到OpenSSL工具配置文件openssl.cnf,对于Centos,目录在/etc/pki/tls/中,编辑openssl.cnf,在[v3_ca]下面添加:subjectAltName = IP:域名|IP地址。如果没有域名填写IP即可。
1 2 [ v3_ca ] subjectAltName = IP:193.112.221.230
通过OpenSSL生成证书与密钥
1 2 3 4 5 6 7 [root@VM_95_141_centos data] [root@VM_95_141_centos ssl] [root@VM_95_141_centos ssl] ca.crt ca.key [root@VM_95_141_centos ssl] [root@VM_95_141_centos ssl] [root@VM_95_141_centos ssl]
将生成的私有证书追加到系统的证书管理文件中。
1 [root@VM_95_141_centos harbor]
重启docker, 该步骤一定不要省略,否则有可能加载私钥失败
1 [root@VM_95_141_centos harbor]
3. 安装Harbor
下载离线安装包,解压后可以看到里面包含了如下文件:
1 2 [root@VM_95_141_centos harbor]# ls harbor.v1.8.2.tar.gz harbor.yml install.sh LICENSE prepare
其中harbor.v1.8.2.tar.gz
是软件包,harbor.yml
是配置文件,install.sh
是安装脚本,prepare
是准备配置Harbor环境脚本。需要修改harbor.yml
如下字段进行配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 hostname: 193.112 .221 .230 http: port: 80 https: port: 443 certificate: /data/ssl/ca.crt private_key: /data/ssl/ca.key
然后先后执行prepare
与install.sh
进行配置与安装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [root@VM_95_141_centos harbor] prepare base dir is set to /root/harbor Generated configuration file: /config/log /logrotate.conf Generated configuration file: /config/nginx/nginx.conf Generated configuration file: /config/core/env Generated configuration file: /config/core/app.conf Generated configuration file: /config/registry/config.yml Generated configuration file: /config/registryctl/env Generated configuration file: /config/db/env Generated configuration file: /config/jobservice/env Generated configuration file: /config/jobservice/config.yml loaded secret from file: /secret/keys/secretkey Generated configuration file: /compose_location/docker-compose.yml Clean up the input dir [root@VM_95_141_centos harbor] total 564668 drwxr-xr-x 3 root root 4096 Aug 24 23:09 common -rw-r--r-- 1 root root 5377 Aug 24 23:09 docker-compose.yml -rw-r--r-- 1 root root 578167000 Aug 8 15:51 harbor.v1.8.2.tar.gz -rw-r--r-- 1 root root 4494 Aug 24 23:08 harbor.yml -rwxr-xr-x 1 root root 5088 Aug 8 15:51 install.sh -rw-r--r-- 1 root root 11347 Aug 8 15:51 LICENSE -rwxr-xr-x 1 root root 1654 Aug 8 15:51 prepare [root@VM_95_141_centos harbor] [root@VM_95_141_centos harbor]
一般都会安装成功。
4. 操作Harbor Harbor安装成功后,如下图示。我们可以对齐进行启动、停止、修改、上传镜像、下载镜像等操作。
4.1 查看Harbor 可以通过docker ps
命令查询当前有哪些docker实例在运行。查询Harbor是否正常运行还可以查询docker-compose运行状态。需要进入Harbor所在目录,执行docker-compose ps
。
1 2 3 4 5 6 7 8 9 10 11 12 13 [root@VM_95_141_centos harbor] Name Command State Ports ----------------------------------------------------------------------------------------- harbor-core /harbor/start.sh Up (healthy) harbor-db /entrypoint.sh postgres Up (healthy) 5432/tcp harbor-jobservice /harbor/start.sh Up harbor-log /bin/sh -c /usr/local /bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp harbor-portal nginx -g daemon off; Up (healthy) 80/tcp nginx nginx -g daemon off; Up (healthy) 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp redis docker-entrypoint.sh redis ... Up 6379/tcp registry /entrypoint.sh /etc/regist ... Up (healthy) 5000/tcp registryctl /harbor/start.sh Up (healthy) [root@VM_95_141_centos harbor]
4.2 停止与重启Harbor 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@VM_95_141_centos ~] [root@VM_95_141_centos harbor] common docker-compose.yml harbor.v1.8.2.tar.gz harbor.yml install.sh LICENSE prepare [root@VM_95_141_centos harbor] Stopping nginx ... done Stopping harbor-portal ... done Stopping harbor-jobservice ... done Stopping harbor-core ... done Stopping registryctl ... done Stopping redis ... done Stopping registry ... done Stopping harbor-db ... done Stopping harbor-log ... done [root@VM_95_141_centos harbor] Starting log ... done Starting registry ... done Starting registryctl ... done Starting postgresql ... done Starting core ... done Starting portal ... done Starting redis ... done Starting jobservice ... done Starting proxy ... done [root@VM_95_141_centos harbor]
如果需要修改Harbor的配置,可以先停止Harbor实例,更新 harbor.yml
文件,再执行 prepare
脚本重新构建配置,最终启动Harbor实例:
1 2 3 4 [root@VM_95_141_centos ~] [root@VM_95_141_centos ~] [root@VM_95_141_centos ~] [root@VM_95_141_centos ~]
清除Harbor实例的时候会保持镜像数据与数据库在系统中:
1 [root@VM_95_141_centos ~]
删除Harbor数据库与镜像数据 (如果需要重新安装):
1 2 [root@VM_95_141_centos ~] [root@VM_95_141_centos ~]
4.3 上传镜像到Harbor 查看当前镜像:docker images
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@VM_95_141_centos harbor] REPOSITORY TAG IMAGE ID C REATED SIZE goharbor/chartmuseum-photon v0.9.0-v1.8.2 e72f3e685a37 2 weeks ago 130MB goharbor/harbor-migrator v1.8.2 c11a64ae3a1e 2 weeks ago 361MB goharbor/redis-photon v1.8.2 18036ee471bc 2 weeks ago 107MB goharbor/clair-photon v2.0.8-v1.8.2 68de68a40e66 2 weeks ago 164MB goharbor/notary-server-photon v0.6.1-v1.8.2 90cf28ef3a84 2 weeks ago 135MB goharbor/notary-signer-photon v0.6.1-v1.8.2 e9b49ea8ed32 2 weeks ago 132MB goharbor/harbor-registryctl v1.8.2 ad798fd6e618 2 weeks ago 96.5MB goharbor/registry-photon v2.7.1-patch-2819-v1.8.2 081bfb3dc181 2 weeks ago 81.6MB goharbor/nginx-photon v1.8.2 1592a48daeac 2 weeks ago 36.2MB goharbor/harbor-log v1.8.2 42ad5ef672dd 2 weeks ago 81.8MB goharbor/harbor-jobservice v1.8.2 623ed0095966 2 weeks ago 119MB goharbor/harbor-core v1.8.2 03d6daab10c7 2 weeks ago 135MB goharbor/harbor-portal v1.8.2 41e264a7980b 2 weeks ago 43.2MB goharbor/harbor-db v1.8.2 927ecd68ee1f 2 weeks ago 144MB goharbor/prepare v1.8.2 b0d62cc7683d 2 weeks ago 145MB
从Docker hub上下载一个最新的Nginx镜像:docker pull nginx
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@VM_95_141_centos harbor]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 1ab2bdfe9778: Pull complete a17e64cfe253: Pull complete e1288088c7a8: Pull complete Digest: sha256:53ddb41e46de3d63376579acf46f9a41a8d7de33645db47a486de9769201fec9 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest [root@VM_95_141_centos harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 5a3221f0137b 8 days ago 126MB goharbor/chartmuseum-photon v0.9.0-v1.8.2 e72f3e685a37 2 weeks ago 130MB goharbor/harbor-migrator v1.8.2 c11a64ae3a1e 2 weeks ago 361MB goharbor/redis-photon v1.8.2 18036ee471bc 2 weeks ago 107MB goharbor/clair-photon v2.0.8-v1.8.2 68de68a40e66 2 weeks ago 164MB goharbor/notary-server-photon v0.6.1-v1.8.2 90cf28ef3a84 2 weeks ago 135MB goharbor/notary-signer-photon v0.6.1-v1.8.2 e9b49ea8ed32 2 weeks ago 132MB goharbor/harbor-registryctl v1.8.2 ad798fd6e618 2 weeks ago 96.5MB goharbor/registry-photon v2.7.1-patch-2819-v1.8.2 081bfb3dc181 2 weeks ago 81.6MB goharbor/nginx-photon v1.8.2 1592a48daeac 2 weeks ago 36.2MB goharbor/harbor-log v1.8.2 42ad5ef672dd 2 weeks ago 81.8MB goharbor/harbor-jobservice v1.8.2 623ed0095966 2 weeks ago 119MB goharbor/harbor-core v1.8.2 03d6daab10c7 2 weeks ago 135MB goharbor/harbor-portal v1.8.2 41e264a7980b 2 weeks ago 43.2MB goharbor/harbor-db v1.8.2 927ecd68ee1f 2 weeks ago 144MB goharbor/prepare v1.8.2 b0d62cc7683d 2 weeks ago 145MB
给Nginx镜像打上新标签,push到Harbor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@VM_95_141_centos harbor]# docker tag nginx-mei:v1.0 193.112.221.230/library/nginx:latest [root@VM_95_141_centos harbor]# docker login 193.112.221.230 -uadmin -pHarbor12345 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@VM_95_141_centos harbor]# docker push 193.112.221.230/library/nginx:latest The push refers to repository [193.112.221.230/library/nginx] 12fdf55172df: Pushed 002a63507c1c: Pushed 1c95c77433e8: Pushed latest: digest: sha256:099019968725f0fc12c4b69b289a347ae74cc56da0f0ef56e8eb8e0134fc7911 size: 948 [root@VM_95_141_centos harbor]#
4.4 从Harbor中下载镜像 从Harbor中下载刚上传的Nginx镜像,可以先删除本地的Nginx镜像。然后再从Harbor中Pull下来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 [root@VM_95_141_centos harbor]# docker rmi 193.112.221.230/library/nginx:latest Untagged: 193.112.221.230/library/nginx:latest Untagged: 193.112.221.230/library/nginx@sha256:099019968725f0fc12c4b69b289a347ae74cc56da0f0ef56e8eb8e0134fc7911 [root@VM_95_141_centos harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest fc03dc56d371 3 days ago 502MB 193.112.221.230/mei_test/nginx v1.0 5a3221f0137b 9 days ago 126MB nginx-mei v1.0 5a3221f0137b 9 days ago 126MB nginx latest 5a3221f0137b 9 days ago 126MB mysql 5.6 732765f8c7d2 11 days ago 257MB goharbor/chartmuseum-photon v0.9.0-v1.8.2 e72f3e685a37 2 weeks ago 130MB goharbor/harbor-migrator v1.8.2 c11a64ae3a1e 2 weeks ago 361MB goharbor/redis-photon v1.8.2 18036ee471bc 2 weeks ago 107MB goharbor/clair-photon v2.0.8-v1.8.2 68de68a40e66 2 weeks ago 164MB goharbor/notary-server-photon v0.6.1-v1.8.2 90cf28ef3a84 2 weeks ago 135MB goharbor/notary-signer-photon v0.6.1-v1.8.2 e9b49ea8ed32 2 weeks ago 132MB goharbor/harbor-registryctl v1.8.2 ad798fd6e618 2 weeks ago 96.5MB goharbor/registry-photon v2.7.1-patch-2819-v1.8.2 081bfb3dc181 2 weeks ago 81.6MB goharbor/nginx-photon v1.8.2 1592a48daeac 2 weeks ago 36.2MB goharbor/harbor-log v1.8.2 42ad5ef672dd 2 weeks ago 81.8MB goharbor/harbor-jobservice v1.8.2 623ed0095966 2 weeks ago 119MB goharbor/harbor-core v1.8.2 03d6daab10c7 2 weeks ago 135MB goharbor/harbor-portal v1.8.2 41e264a7980b 2 weeks ago 43.2MB goharbor/harbor-db v1.8.2 927ecd68ee1f 2 weeks ago 144MB goharbor/prepare v1.8.2 b0d62cc7683d 2 weeks ago 145MB [root@VM_95_141_centos harbor]# docker pull 193.112.221.230/library/nginx:latest latest: Pulling from library/nginx Digest: sha256:099019968725f0fc12c4b69b289a347ae74cc56da0f0ef56e8eb8e0134fc7911 Status: Downloaded newer image for 193.112.221.230/library/nginx:latest 193.112.221.230/library/nginx:latest [root@VM_95_141_centos harbor]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest fc03dc56d371 3 days ago 502MB 193.112.221.230/library/nginx latest 5a3221f0137b 9 days ago 126MB 193.112.221.230/mei_test/nginx v1.0 5a3221f0137b 9 days ago 126MB nginx-mei v1.0 5a3221f0137b 9 days ago 126MB nginx latest 5a3221f0137b 9 days ago 126MB mysql 5.6 732765f8c7d2 11 days ago 257MB goharbor/chartmuseum-photon v0.9.0-v1.8.2 e72f3e685a37 2 weeks ago 130MB goharbor/harbor-migrator v1.8.2 c11a64ae3a1e 2 weeks ago 361MB goharbor/redis-photon v1.8.2 18036ee471bc 2 weeks ago 107MB goharbor/clair-photon v2.0.8-v1.8.2 68de68a40e66 2 weeks ago 164MB goharbor/notary-server-photon v0.6.1-v1.8.2 90cf28ef3a84 2 weeks ago 135MB goharbor/notary-signer-photon v0.6.1-v1.8.2 e9b49ea8ed32 2 weeks ago 132MB goharbor/harbor-registryctl v1.8.2 ad798fd6e618 2 weeks ago 96.5MB goharbor/registry-photon v2.7.1-patch-2819-v1.8.2 081bfb3dc181 2 weeks ago 81.6MB goharbor/nginx-photon v1.8.2 1592a48daeac 2 weeks ago 36.2MB goharbor/harbor-log v1.8.2 42ad5ef672dd 2 weeks ago 81.8MB goharbor/harbor-jobservice v1.8.2 623ed0095966 2 weeks ago 119MB goharbor/harbor-core v1.8.2 03d6daab10c7 2 weeks ago 135MB goharbor/harbor-portal v1.8.2 41e264a7980b 2 weeks ago 43.2MB goharbor/harbor-db v1.8.2 927ecd68ee1f 2 weeks ago 144MB goharbor/prepare v1.8.2 b0d62cc7683d 2 weeks ago 145MB [root@VM_95_141_centos harbor]#
文章首发公众号-梅旭红,欢迎关注,不定期更新。
全文完。
欢迎关注公众号-梅旭红,记录技术之旅,不定期更新.