Docker的那些事儿我爱编程

学习利用harbor搭建docker 镜像仓库

2018-05-17  本文已影响79人  sjyu_eadd

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有说明)

创建自己的项目:

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

将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  

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界面对项目及其镜像进行一些删除操作:

上一篇下一篇

猜你喜欢

热点阅读