成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Harbor構建私有Docker鏡像倉庫

開發 開發工具
AD/LDAP集成、以及審計日志(Audit logging) 等企業用戶需求的功能,同時還原生支持中文。Harbor的每個組件都是以Docker容器的形式構建的,使用Docker Compose來對它進行部署。

簡介

Harbor是VMware公司最近開源的企業級Docker Registry項目, 項目地址為https://github.com/vmware/harbor 其目標是幫助用戶迅速搭建一個企業級的Docker registry服務。它以Docker公司開源的registry為基礎,提供了管理UI, 基于角色的訪問控制(Role Based Access Control),AD/LDAP集成、以及審計日志(Audit logging) 等企業用戶需求的功能,同時還原生支持中文。Harbor的每個組件都是以Docker容器的形式構建的,使用Docker Compose來對它進行部署。用于部署Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由5個容器組成:

  • Proxy: 由Nginx 服務器構成的反向代理。
  • Registry:由Docker官方的開源registry 鏡像構成的容器實例。
  • UI: 即架構中的core services, 構成此容器的代碼是Harbor項目的主體。
  • Mysql: 由官方MySql鏡像構成的數據庫容器。
  • Log: 運行著rsyslogd的容器,通過log-driver的形式收集其他容器的日志。

這幾個容器通過Docker link的形式連接在一起,在容器之間通過容器名字互相訪問。對終端用戶而言,只需要暴露proxy (即Nginx)的服務端口。

快速部署方法

Harbor使用Docker-compose部署,后續所有的配置以及部署均在$HARBOR_HOME/Deploy/`目錄下完成,因此若無特別說明,工作目錄都在該目錄下。

首先需要進行簡單的配置,配置文件為harbor.cfg,配置項如下:

  • hostname:hostname為外部可訪問的地址,即bind addr,通常設置為本地公有IP,若內部使用DNS,可設置為主機名。
  • auth_mode:Harbor支持兩種認證方式,默認為本地存儲,即賬號信息存儲在mysql下,本文先使用本地存儲方式,另外一種認證方式LDAP將在后續章節單獨介紹。

設置完畢后,配置文件為:

  1. hostname = 42.62.x.x 
  2. ui_url_protocol = http 
  3.  
  4. #email_server = smtp.mydomain.com 
  5. #email_server_port = 25 
  6. #email_username = sample_admin@mydomain.com 
  7. #email_password = abc 
  8. #email_from = admin <sample_admin@mydomain.com> 
  9.  
  10. ##The password of Harbor admin, change this before any production use. 
  11. harbor_admin_password= admin 
  12.  
  13. ##By default the auth mode is db_auth, i.e. the credentials are stored in a local database
  14. #Set it to ldap_auth if you want to verify a user credentials against an LDAP server. 
  15. auth_mode = ldap_auth 
  16.  
  17. #The password for the root user of mysql db, change this before any production use. 
  18. db_password = root123 
  19. #Switch for self-registration feature 
  20. self_registration = on 

運行./prepare腳本更新配置。完成配置后,就可以使用docker-compose快速部署harbor:

  1. docker-compose up -d 

安裝完成后,訪問Web UI,地址:http://bind_addr,即配置的hostname地址,端口為80。如圖:

使用harbor

Web UI

安裝完成后,打開Web UI,點擊登錄,默認賬戶admin/Harbor12345,登錄成功后進入項目管理界面:

用戶可以點擊“我的項目”進行項目管理,比如新建項目、用戶以及權限管理等。點擊項目名稱,進入該項目下的鏡像管理界面,可以查看、檢索鏡像。

docker client

以上是UI界面的使用,接下來介紹如何使用docker client進行鏡像的管理,由于harbor只支持Registry V2 API,因此Docker client版本必須>= 1.6.0。

由于我們配置認證服務使用的是http,Docker認為是不安全的,要使用我們部署的鏡像倉庫,需要配置本地docker,修改配置文件(/etc/default/docker)為:

  1. DOCKER_OPTS="$DOCKER_OPTS --insecure-registry 42.62.x.x" 

其中42.62.x.x是我們部署Harbor的地址,即hostname配置項值。配置完后需要重啟docker服務。

驗證能否登錄:

  1. docker login 42.62.x.x 
  2. # docker login -u admin -p Harbor12345 -e test@gmail.com 42.62.x.x 

登錄成功后顯示如下:

接下來我們上傳一個鏡像,以ubuntu鏡像為例,首先從docker hub拉取ubuntu鏡像:

  1. docker pull ubuntu:14.04 

然后為該鏡像打上新的標簽,標簽格式為:Harbor地址/項目名/鏡像名稱:鏡像標簽,如42.62.x.x/library/ubuntu:14.04:

  1. docker tag ubuntu:14.04 42.62.x.x/library/ubuntu:14.04 

push我們的鏡像到harbor倉庫中:

  1. docker push ubuntu:14.04 42.62.x.x/library/ubuntu:14.04 

push成功后,我們就可以從harbor倉庫中使用docker pull拉取我們的鏡像了,注意如果是私有項目,必須先使用docker login登錄:

  1. docker pull 42.62.x.x/library/ubuntu:14.04 

使用harbor作為mirror registry

Mirror Registry簡介

Mirror是Docker Registry的一種特殊類型,它起到了類似代理服務器的緩存角色,在用戶和Docker Hub之間做Image的緩存。 官方定義為:

Such a registry is provided by a third-party hosting infrastructure but is targeted at their customers only. Some mechanism ensures that public images are pulled from a sponsor registry to the mirror registry, to make sure that the customers of the third-party provider can docker pull those images locally.

其基本工作原理是,當用戶pull一個鏡像時,若鏡像在mirror 服務器存在,則直接從mirror服務器拉取,否則若不存在該鏡像,則由mirror server自動代理往dockerhub(可配置)中拉取鏡像,并緩存到mirror服務器中,當客戶再次拉取這個鏡像時,直接從mirror server中拉取,不需要再次從dockerhub中拉取。

注意Mirror跟Private Registry有本質區別

Private Registry是開發者或者企業自建的Image存儲庫,通常用來保存企業內部的Docker Image,用于內部開發流程和產品的發布、版本控制。Mirror是一種代理中轉服務,我們提供的Mirror服務,直接對接Docker Hub的官方Registry,Docker Hub上有數以十萬計的各類Docker Image。在使用Private Registry時,需要在Docker Pull,或Dockerfile中直接鍵入Private Registry的地址,通常這樣會導致跟Private Registry的綁定,缺少靈活性。

原理如圖:

Harbor目前不支持pull cache功能,已提交issue #120。不過我們只需要手動修改下配置即可完成,具體配置可參考官方Registry as a pull through cache.

我們在運行./prepare之前修改config/registry/config.yml文件,追加以下配置:

  1. proxy:  
  2. remoteurl: https://registry-1.docker.io 

如果需要訪問私有倉庫,需要填寫dockerhub的用戶名和密碼:

  1. proxy: 
  2.   remoteurl: https://registry-1.docker.io 
  3.   username: [username] 
  4.   password: [password

然后重新啟動harbor服務:

  1. # 注意不要執行./prepare 
  2. docker-compose stop 
  3. docker-compose rm -f 
  4. docker-compose up -d 

除了設置harbor(或者registry),還需要配置本地docker服務,指定--registry-mirror參數,修改docker配置文件(/etc/default/docker):

  1. DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://42.62.x.x --insecure-registry 42.62.x.x" 

注意替換42.62.x.x為你的registry地址。

注意:修改了docker配置文件,必須重啟docker服務才能生效。

harbor由于引進了認證功能,因此push操作時,必須保證project存在,比如push krystism/ffmpeg,必須保證harbor創建了krystism project,否則會失敗。為了能夠正常push/pull dockerhub的官方鏡像,務必創建library project,如圖:

假設本地不存在python鏡像:

  1. docker pull python # pull from dockerhub 
  2. docker rmi python # remove the image 
  3. docker pull python # yes, it will pull from harbor now 

我們***次pull python后,harbor發現不存在該鏡像,于是自己作為代理往dockerhub里拉取,拉取后保存到本地,可以通過WebUI查看。客戶端再次拉取python鏡像時,由于harbor已經存在該鏡像,因此不需要再往dockerhub拉取,速度大幅度提高!

對接LDAP認證

Harbor支持兩種認證方式,默認為本地存儲,即賬號信息存儲在mysql下,上文已經具體介紹。接下來介紹另外一種認證方式LDAP,只需要修改配置文件即可。需要提供ldap url以及ldap basedn參數,并且設置auth_mode為ldap_auth。

快速部署LDAP服務

為了測試方便,我們使用docker啟動一個LDAP服務器,啟動腳本如下:

  1. #!/bin/bash 
  2. NAME=ldap_server 
  3. docker rm -f $NAME 2>/dev/null 
  4. docker run --env LDAP_ORGANISATION="Unitedstack Inc." --env LDAP_DOMAIN="ustack.com" \ 
  5.  --env LDAP_ADMIN_PASSWORD="admin_password" -v `pwd`/containers/openldap/data:/var/lib/ldap -v `pwd`/containers/openldap/slapd.d:/etc/ldap/slapd.d --detach --name $NAME  osixia/openldap:1.1.2 

創建新用戶,首先需要定義ldif文件,new_user.ldif:

  1. dn: uid=test,dc=ustack,dc=com 
  2. uid: test 
  3. cn: test 
  4. sn: 3 
  5. objectClass: top 
  6. objectClass: posixAccount 
  7. objectClass: inetOrgPerson 
  8. loginShell: /bin/bash 
  9. homeDirectory: /home/test 
  10. uidNumber: 1001 
  11. gidNumber: 1001 
  12. userPassword: 1q2w3e4r 
  13. mail: test@example.com 
  14. gecos: test 

通過以下腳本創建新用戶,其中ldap_server為LDAP服務容器名稱。

  1. docker cp new_user.ldif ldap_server:/  
  2. docker exec ldap_server ldapadd -x -D "cn=admin,dc=ustack,dc=com" -w admin_password -f /new_user.ldif -ZZ 

查看用戶是否創建成功:

  1. docker exec ldap_server ldapsearch -x -h localhost -b dc=ustack,dc=com -D "cn=admin,dc=ustack,dc=com" -w admin_password 

檢查test用戶是否存在,若存在,則說明創建成功,否則需要使用docker logs查看日志。

配置harbor使用LDAP認證

修改harbor.cfg文件關于LDAP配置項,如下:

  1. auth_mode = ldap_auth 
  2. ldap_url = ldap://42.62.x.x 
  3. ldap_basedn = uid=%s,dc=ustack,dc=com 

然后重新部署harbor:

  1. ./prepare 
  2. docker-compose stop 
  3. docker-compose rm -f 
  4. docker-compose up -d 

測試是否能夠使用test用戶登錄:

  1. docker login -u test -p 1q2w3e4r -e test@example.com 42.62.x.x 

查看結果。

【本文是51CTO專欄作者“付廣平”的原創文章,如需轉載請通過51CTO獲得聯系】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-01-22 09:12:51

2022-07-11 07:37:55

HarborContainerd

2020-08-07 17:03:24

私有鏡像倉庫

2022-09-16 10:19:36

HarborContainerd

2020-09-18 07:59:44

GitLabCI

2019-08-18 23:46:52

私有云容器鏡像倉庫

2023-03-30 07:35:55

2024-05-15 11:09:30

2024-02-20 08:08:43

2022-12-08 19:27:38

2021-08-23 08:30:30

Docker BuildKit 架構

2022-09-15 10:03:42

Jaeger分布式追蹤系統

2021-05-10 08:58:09

Harbor架構Registry 服務

2023-02-13 23:52:18

2017-11-07 06:28:11

2021-10-20 07:18:51

Harbor鏡像項目

2019-10-16 10:08:58

DockerLinuxWindows

2017-03-01 14:30:48

存儲云私有云公有云

2017-03-03 10:18:13

存儲云APIGUI

2020-11-12 07:51:05

DockerSpring Boot應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲小视频在线播放 | 国产97碰免费视频 | 99精品国产一区二区三区 | 国产wwwcom| 日韩在线播放一区 | 日韩一区二区在线视频 | 久久亚洲一区二区三 | 一区二区视频在线 | 人人人人爽| a级黄色片在线观看 | 理论片午午伦夜理片影院 | 6080亚洲精品一区二区 | 亚洲视频在线免费观看 | 欧美午夜一区 | 精品国产一区二区三区成人影院 | 欧美一级免费 | 成人精品鲁一区一区二区 | 欧美日韩国产一区二区三区不卡 | 久久国产精品无码网站 | 新超碰97| 黄色片av| 色欧美综合 | 国产精品日日做人人爱 | 国产精品网址 | 国产高清免费 | 精品一区二区三区中文字幕 | 午夜精品一区二区三区在线观看 | 国产欧美日韩综合精品一 | 日本精品一区二区 | 亚洲成人一区 | 精彩视频一区二区三区 | 亚洲国产精选 | 青青草一区 | 日韩在线精品 | 伊人久久综合 | 天天干国产 | 超碰精品在线 | 久久久久久久久久影视 | 成人在线观看亚洲 | 久久高清 | 久久久久久久久毛片 |