学习利用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有说明)

创建自己的项目:

我们勾选了公开,意味着任何人都可以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界面对项目及其镜像进行一些删除操作:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容