学习使用VMware harbor搭建docker镜像仓库

Harbor 是一个企业级的 Docker Registry,可以实现 images 的私有存储和日志统计权限控制等功能,并支持创建多项目(Harbor 提出的概念),基于官方 Registry V2 实现。

目标:在Ubuntu 16.04上搭建Harbor镜像仓库

环境:

Ubuntu-001:10.140.160.100 作为Harbor镜像仓库搭建机器

Ubuntu-004: 10.140.161.187 作为docker host去测试push pull镜像

前提条件:已安装python docker docker-compose

Python应该是2.7或更高版本

Docker引擎应为1.10或更高版本

Docker Compose需要为1.6.0或更高版本

Harbor 可以通过以下两种方式之一安装:(下载地址:https://github.com/vmware/harbor/releases)

  • 在线安装程序:安装程序从Docker集线器下载Harbour的映像。因此,安装程序的尺寸非常小。
  • 脱机安装程序:当主机没有Internet连接时,请使用此安装程序。安装程序包含预制图像,因此其大小较大。

本次演示离线安装过程:(我下载了离线安装包:harbor-offline-installer-v1.5.0.tgz)

1、解压harbor-offline-installer-v1.5.0.tgz

tar xzvf harbor-offline-installer-v1.5.0.tgz

2、进入harbor,修改harbor.cfg文件

root@Ubuntu-001:~/harbor# ll
total 854980
drwxr-xr-x  4 root root      4096 May 17 14:33 ./
drwx------ 16 root root      4096 May 17 14:33 ../
drwxr-xr-x  4 root root      4096 May 17 13:00 common/
-rw-r--r--  1 root root      1185 May  2 23:34 docker-compose.clair.yml
-rw-r--r--  1 root root      1725 May  2 23:34 docker-compose.notary.yml
-rw-r--r--  1 root root      3596 May  2 23:34 docker-compose.yml
drwxr-xr-x  3 root root      4096 May  2 23:34 ha/
-rw-r--r--  1 root root      6685 May 17 12:55 harbor.cfg
-rw-r--r--  1 root root 875401338 May  2 23:36 harbor.v1.5.0.tar.gz
-rwxr-xr-x  1 root root      5773 May  2 23:34 install.sh*
-rw-r--r--  1 root root     10771 May  2 23:34 LICENSE
-rw-r--r--  1 root root       482 May  2 23:34 NOTICE
-rwxr-xr-x  1 root root     27379 May  2 23:34 prepare*
hostname = 10.140.160.100

我仅修改了hostname为我的宿主机ip

3、运行install.sh脚本

该脚本主要做了以下事情:

(1)检查docker docker-compose是否安装及版本

(2)将harbor.v1.5.0.tar.gz解压并docker load到主机

(3)环境准备

(4)依赖docker-compose.yml文件启动相关的容器

root@Ubuntu-001:~/harbor# ./install.sh 

[Step 0]: checking installation environment ...

Note: docker version: 17.12.0

Note: docker-compose version: 1.19.0

[Step 1]: loading Harbor images ...
52ef9064d2e4: Loading layer [==================================================>]  135.9MB/135.9MB
c169f7c7a5ff: Loading layer [==================================================>]  154.2MB/154.2MB
a2194b3a5434: Loading layer [==================================================>]  10.75MB/10.75MB
f3809b773329: Loading layer [==================================================>]  2.048kB/2.048kB
bdd2cd4d5394: Loading layer [==================================================>]  48.13kB/48.13kB
bce61638a813: Loading layer [==================================================>]   10.8MB/10.8MB
Loaded image: vmware/clair-photon:v2.0.1-v1.5.0
0bf5fb4e60f4: Loading layer [==================================================>]     95MB/95MB
9fc876f7ef97: Loading layer [==================================================>]  6.656kB/6.656kB
9f364ae08e7f: Loading layer [==================================================>]  2.048kB/2.048kB
d8e3574f27f2: Loading layer [==================================================>]   7.68kB/7.68kB
Loaded image: vmware/postgresql-photon:v1.5.0
8cb812a02f44: Loading layer [==================================================>]  23.25MB/23.25MB
826629c35871: Loading layer [==================================================>]  15.36MB/15.36MB
68fc630fcd08: Loading layer [==================================================>]  15.36MB/15.36MB
Loaded image: vmware/harbor-adminserver:v1.5.0
fd8233cdfcf0: Loading layer [==================================================>]  23.25MB/23.25MB
7ab0310b3d9d: Loading layer [==================================================>]   2.56kB/2.56kB
75609935cf31: Loading layer [==================================================>]   2.56kB/2.56kB
654b65c0f8ff: Loading layer [==================================================>]  2.048kB/2.048kB
1da5c77da464: Loading layer [==================================================>]   22.8MB/22.8MB
5e9191f65a4c: Loading layer [==================================================>]   22.8MB/22.8MB
Loaded image: vmware/registry-photon:v2.6.2-v1.5.0
Loaded image: vmware/photon:1.0
454c81edbd3b: Loading layer [==================================================>]  135.2MB/135.2MB
e99db1275091: Loading layer [==================================================>]  395.4MB/395.4MB
051e4ee23882: Loading layer [==================================================>]  9.216kB/9.216kB
6cca4437b6f6: Loading layer [==================================================>]  9.216kB/9.216kB
1d48fc08c8bc: Loading layer [==================================================>]   7.68kB/7.68kB
0419724fd942: Loading layer [==================================================>]  1.536kB/1.536kB
543c0c1ee18d: Loading layer [==================================================>]  655.2MB/655.2MB
4190aa7e89b8: Loading layer [==================================================>]  103.9kB/103.9kB
Loaded image: vmware/harbor-migrator:v1.5.0
1736beaf11c8: Loading layer [==================================================>]  23.25MB/23.25MB
3026403c0282: Loading layer [==================================================>]  24.39MB/24.39MB
1aaf4a794824: Loading layer [==================================================>]  7.168kB/7.168kB
b427e1a2dd17: Loading layer [==================================================>]  10.56MB/10.56MB
68906d88fd96: Loading layer [==================================================>]  24.38MB/24.38MB
Loaded image: vmware/harbor-ui:v1.5.0
cf8fe5c86f4b: Loading layer [==================================================>]  78.26MB/78.26MB
d15d127e6aa2: Loading layer [==================================================>]  3.072kB/3.072kB
9d47dbd3d824: Loading layer [==================================================>]   59.9kB/59.9kB
098c90ca59f4: Loading layer [==================================================>]  61.95kB/61.95kB
Loaded image: vmware/redis-photon:v1.5.0
71a9f645bc2d: Loading layer [==================================================>]  4.755MB/4.755MB
Loaded image: vmware/nginx-photon:v1.5.0
c4c015394057: Loading layer [==================================================>]  401.3MB/401.3MB
f9d78b9c2c97: Loading layer [==================================================>]  9.216kB/9.216kB
5cf7df688ef1: Loading layer [==================================================>]  9.216kB/9.216kB
9513efb6efc9: Loading layer [==================================================>]   7.68kB/7.68kB
52252ffb5fc7: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image: vmware/mariadb-photon:v1.5.0
243e37f674cb: Loading layer [==================================================>]  23.25MB/23.25MB
eb85e1888b13: Loading layer [==================================================>]  10.95MB/10.95MB
7b86ea27af2e: Loading layer [==================================================>]   17.3MB/17.3MB
a876e7e90459: Loading layer [==================================================>]  15.87kB/15.87kB
08c705395182: Loading layer [==================================================>]  3.072kB/3.072kB
2cb9ada082da: Loading layer [==================================================>]  28.24MB/28.24MB
Loaded image: vmware/notary-signer-photon:v0.5.1-v1.5.0
b9abce7219b5: Loading layer [==================================================>]  73.15MB/73.15MB
ee87a4f06084: Loading layer [==================================================>]  3.584kB/3.584kB
ca647be60b60: Loading layer [==================================================>]  3.072kB/3.072kB
aeb4260dd4ca: Loading layer [==================================================>]  4.096kB/4.096kB
4493e8c270cf: Loading layer [==================================================>]  3.584kB/3.584kB
ce532e45f1e6: Loading layer [==================================================>]  9.728kB/9.728kB
Loaded image: vmware/harbor-log:v1.5.0
4de8028cebd0: Loading layer [==================================================>]  11.78kB/11.78kB
b762605dfab6: Loading layer [==================================================>]   2.56kB/2.56kB
bed1e891c86f: Loading layer [==================================================>]  3.072kB/3.072kB
Loaded image: vmware/harbor-db:v1.5.0
820ecb80c0fa: Loading layer [==================================================>]  23.25MB/23.25MB
43ece8a3b461: Loading layer [==================================================>]   20.9MB/20.9MB
e7ac4a143f8d: Loading layer [==================================================>]   20.9MB/20.9MB
Loaded image: vmware/harbor-jobservice:v1.5.0
6ae72c7ad4ac: Loading layer [==================================================>]  12.16MB/12.16MB
1ad34ba80481: Loading layer [==================================================>]   17.3MB/17.3MB
f6ae3aed7f00: Loading layer [==================================================>]  15.87kB/15.87kB
1b77c5882538: Loading layer [==================================================>]  3.072kB/3.072kB
6364681eec7e: Loading layer [==================================================>]  29.46MB/29.46MB
Loaded image: vmware/notary-server-photon:v0.5.1-v1.5.0


[Step 2]: preparing environment ...
Generated and saved secret to file: /data/secretkey
Generated configuration file: ./common/config/nginx/nginx.conf
Generated configuration file: ./common/config/adminserver/env
Generated configuration file: ./common/config/ui/env
Generated configuration file: ./common/config/registry/config.yml
Generated configuration file: ./common/config/db/env
Generated configuration file: ./common/config/jobservice/env
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/log/logrotate.conf
Generated configuration file: ./common/config/jobservice/config.yml
Generated configuration file: ./common/config/ui/app.conf
Generated certificate, key file: ./common/config/ui/private_key.pem, cert file: ./common/config/registry/root.crt
The configuration files are ready, please use docker-compose to start the service.
Creating harbor-log ... done

[Step 3]: checking existing instance of Harbor ...

Creating registry ... done
Creating harbor-ui ... done
Creating network "harbor_harbor" with the default driver
Creating nginx ... done
Creating harbor-adminserver ... 
Creating harbor-db ... 
Creating registry ... 
Creating redis ... 
Creating harbor-ui ... 
Creating nginx ... 
Creating harbor-jobservice ... 

✔ ----Harbor has been installed and started successfully.----

Now you should be able to visit the admin portal at http://10.140.160.100. 
For more details, please visit https://github.com/vmware/harbor .

运行后的image及启动的容器

root@Ubuntu-001:~/harbor# docker images|grep vm
vmware/redis-photon                                      v1.5.0              7c03076402d9        2 weeks ago         207MB
vmware/clair-photon                                      v2.0.1-v1.5.0       7ae4e0670a3f        2 weeks ago         301MB
vmware/notary-server-photon                              v0.5.1-v1.5.0       0b2b23300552        2 weeks ago         211MB
vmware/notary-signer-photon                              v0.5.1-v1.5.0       67c41b4a1283        2 weeks ago         209MB
vmware/registry-photon                                   v2.6.2-v1.5.0       3059f44f4b9a        2 weeks ago         198MB
vmware/nginx-photon                                      v1.5.0              e100456182fc        2 weeks ago         135MB
vmware/harbor-log                                        v1.5.0              62bb6b8350d9        2 weeks ago         200MB
vmware/harbor-jobservice                                 v1.5.0              aca9fd2e867f        2 weeks ago         194MB
vmware/harbor-ui                                         v1.5.0              1055166068d0        2 weeks ago         212MB
vmware/harbor-adminserver                                v1.5.0              019bc4544829        2 weeks ago         183MB
vmware/harbor-db                                         v1.5.0              82354dcf564f        2 weeks ago         526MB
vmware/mariadb-photon                                    v1.5.0              403e7e656499        2 weeks ago         526MB
vmware/postgresql-photon                                 v1.5.0              35c891dea9cf        2 weeks ago         221MB
vmware/harbor-migrator                                   v1.5.0              466c57ab0dc3        2 weeks ago         1.16GB
vmware/photon                                            1.0                 4b481ecbef2a        3 weeks ago         130MB
root@Ubuntu-001:~/harbor# docker ps|grep vm
bf5f9931e56b        vmware/harbor-jobservice:v1.5.0            "/harbor/start.sh"       2 hours ago         Up 2 hours                                                                                harbor-jobservice
531cbf68d620        vmware/nginx-photon:v1.5.0                 "nginx -g 'daemon of…"   2 hours ago         Up 2 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
575f1694fb5e        vmware/harbor-ui:v1.5.0                    "/harbor/start.sh"       2 hours ago         Up 2 hours (healthy)                                                                      harbor-ui
e8474e31b25f        vmware/redis-photon:v1.5.0                 "docker-entrypoint.s…"   2 hours ago         Up 2 hours             6379/tcp                                                           redis
a6d2b313d197        vmware/harbor-db:v1.5.0                    "/usr/local/bin/dock…"   2 hours ago         Up 2 hours (healthy)   3306/tcp                                                           harbor-db
226e6ab74032        vmware/registry-photon:v2.6.2-v1.5.0       "/entrypoint.sh serv…"   2 hours ago         Up 2 hours (healthy)   5000/tcp                                                           registry
bf8557680303        vmware/harbor-adminserver:v1.5.0           "/harbor/start.sh"       2 hours ago         Up 2 hours (healthy)                                                                      harbor-adminserver
16d5b2ffc0a2        vmware/harbor-log:v1.5.0                   "/bin/sh -c /usr/loc…"   2 hours ago         Up 2 hours (healthy)   127.0.0.1:1514->10514/tcp                                          harbor-log
root@Ubuntu-001:~/harbor# docker-compose ps
       Name                     Command               State                                Ports                              
------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver   /harbor/start.sh                 Up                                                                      
harbor-db            /usr/local/bin/docker-entr ...   Up      3306/tcp                                                        
harbor-jobservice    /harbor/start.sh                 Up                                                                      
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp                                       
harbor-ui            /harbor/start.sh                 Up                                                                      
nginx                nginx -g daemon off;             Up      0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
redis                docker-entrypoint.sh redis ...   Up      6379/tcp                                                        
registry             /entrypoint.sh serve /etc/ ...   Up      5000/tcp 

浏览器打开:http://10.140.160.100即可进入harbor UI管理界面,用户名/密码:admin/Harbor12345(在harbor.cfg有说明)

创建自己的项目:

学习使用VMware harbor搭建docker镜像仓库_第1张图片

我们勾选了公开,意味着任何人都可以pull我们这个项目的镜像。

学习使用VMware harbor搭建docker镜像仓库_第2张图片

将Ubuntu-001上的dockersamples/visualizer,重新tag为10.140.160.100/shayu/visualizer,然后push到上述仓库

由于我们搭建的仓库仅提供了http服务,而docker默认采用https,可能出现问题,所以需要在Ubuntu-001 和Ubuntu-004上讲仓库地址登记,然后重启docker

root@Ubuntu-001:~/harbor# cat /etc/docker/daemon.json|python -m json.tool
{
    "insecure-registries": [
        "10.140.160.100"
    ]
}
root@Ubuntu-001:~/harbor# systemctl restart docker.service
root@Ubuntu-001:~/harbor# docker login 10.140.160.100
Username: admin
Password: 
Login Succeeded
root@Ubuntu-001:~/harbor# docker tag dockersamples/visualizer 10.140.160.100/shayu/visualizer
root@Ubuntu-001:~/harbor# docker push 10.140.160.100/shayu/visualizer
The push refers to repository [10.140.160.100/shayu/visualizer]
dc5f5688295b: Pushed 
165e8d454007: Pushed 
2c2454e71e24: Pushed 
4b4a3d056a98: Pushed 
d04099cd9299: Pushed 
fb5309439149: Pushed 
965d16d53496: Pushed 
56cd83a89d04: Pushed 
300a6cad969a: Pushed 
dfd8ee95c7e7: Pushed 
f7e883283ebc: Pushed 
0a19bde117a5: Pushed 
5bef08742407: Pushed 
latest: digest: sha256:32a617fccbd22ff7cb49fe0f6243a87ec5095efa3615b7e9e8dca9d65af515e1 size: 3033
将Ubuntu-004上的httpd:2.4.29,重新tag为10.140.160.100/shayu/httpd:2.4.29,然后push到上述仓库
root@Ubuntu-004:~/harbor# docker login 10.140.160.100
Username: admin
Password: 
Login Succeeded
root@Ubuntu-004:~/harbor# docker push 10.140.160.100/shayu/httpd:2.4.29
The push refers to repository [10.140.160.100/shayu/httpd]
e94542d10da9: Pushed 
e24c9744fa3f: Pushed 
ab31df24cf72: Pushed 
7e41cdcec3c2: Pushed 
f57aec6a98ba: Pushed 
540a7775e563: Pushed 
4bcdffd70da2: Pushed 
2.4.29: digest: sha256:f46377c7bc42236b2201a97755afd6b6cb579e2e144883ca1cb6b5a240a3ad91 size: 1780

学习使用VMware harbor搭建docker镜像仓库_第3张图片

root@Ubuntu-004:~/harbor# docker pull 10.140.160.100/shayu/visualizer:latest
latest: Pulling from shayu/visualizer
6d987f6f4279: Pull complete 
96b1d38c63ba: Pull complete 
91cf862459ee: Pull complete 
39acd566379f: Pull complete 
fb8b2bfb7015: Pull complete 
755b5704929b: Pull complete 
38979178e012: Pull complete 
c210aa9a937d: Pull complete 
f1c50e8a4329: Pull complete 
afdd027f1762: Pull complete 
b2353c1e1ec9: Pull complete 
9ebae75c595a: Pull complete 
1004cdeaed49: Pull complete 
Digest: sha256:32a617fccbd22ff7cb49fe0f6243a87ec5095efa3615b7e9e8dca9d65af515e1
Status: Downloaded newer image for 10.140.160.100/shayu/visualizer:latest


root@Ubuntu-001:~/harbor# docker pull 10.140.160.100/shayu/httpd:2.4.29
2.4.29: Pulling from shayu/httpd
f49cf87b52c1: Already exists 
02ca099fb6cd: Already exists 
de7acb18da57: Already exists 
770c8edb393d: Already exists 
0e252730aeae: Already exists 
6288e83d58fa: Pull complete 
a91ad03b2178: Pull complete 
Digest: sha256:f46377c7bc42236b2201a97755afd6b6cb579e2e144883ca1cb6b5a240a3ad91
Status: Downloaded newer image for 10.140.160.100/shayu/httpd:2.4.29

当然你也可以在UI界面对项目及其镜像进行一些删除操作:

学习使用VMware harbor搭建docker镜像仓库_第4张图片

学习使用VMware harbor搭建docker镜像仓库_第5张图片

你可能感兴趣的:(docker的那些事)