.NET遇上Docker - Harbor的安裝與基本使用


Harbor是一個開源企業級Docker注冊中心,可以用於搭建私有的Docker Image倉庫。可以實現權限控制等。

安裝Harbor

首先,需要安裝Docker和Docker Compose,參考其它文章。

Harbor 0.5.0需要:

  • Docker 1.10
  • Docker Compose 1.6.0
  • Python 2.7或更高版本(且不是系統自帶的Python解釋器)

Docker與Docker Compose安裝可以參考這篇文章

本文中選擇將Harbor的密碼存儲在MySQL中,Harbor使用的MySQL是安裝包中集成的MySQL的Docker鏡像,所以如果系統沒有MySQL也不需要事先安裝

獲取Harbor安裝程序

Harbor安裝程序有在線安裝離線安裝兩種,安裝方式都一樣,根據需要選擇。(下面二選一)

tar xvf harbor-online-installer-<version>.tgz #在線安裝文件
tar xvf harbor-offline-installer-<version>.tgz #離線安裝文件

首先要確定Harbor安裝位置並切換到那個文件夾下,如/usr/local:cd /usr/local

修改配置

下載解壓完后,需要先修改配置然后才能開始安裝:

cd harbor
nano harbor.cfg

關於配置文件幾個需要修改的地方:

  • hostname:WebUI的訪問地址,可以是IP或域名(但不要使用127.0.0.1或localhost,這將導致無法外部訪問)
  • ui_url_protocol:http(默認)或https(需要配置SSL的Nginx)
  • email_config:郵件相關配置,郵件配置用於密碼重置等場景
  • harbor_admin_password:用於第一次登錄WebUI時的密碼,一次有效。默認用戶名為admin
  • auth_mode:驗證方式,db_auth(本地MySOL存儲密碼)或ldap_auth(LDAP)
  • ldap_config:auth_mode為LDAP時,配置ldap
  • db_password:auth_mode為db_auth時,這個項配置本地MySQL root賬號的密碼
  • self_registration:是否允許用戶注冊,on(開放注冊)或off(關閉注冊,只能管理員添加用戶)。此項僅在auth_mode為db_auth時起作用。
  • use_compressed_js:啟用js壓縮合並,默認為on
  • max_job_workers:最大鏡像復制作業並行數,默認為3
  • token_expiration:token過期時間,默認30分鍾
  • verify_remote_cert:驗證遠程注冊中心的證書,默認為on,當遠程注冊中心不適用SSL或使用自簽名證書時,設置為off。
  • customize_crt:是否是自簽名證書,on(自簽名證書,需要設置crt_config一些列選項的值)或off(使用證書頒發機構的證書)
  • crt_config:使用自簽名證書時的一些配置項

注意:關於hostname配置,如果使用IP,請確保80端口沒有被占用,否則會因為80端口被占用而導致安裝后Harbor服務啟動失敗。

下面是一個配置文件的配置示例:

hostname = 192.168.1.100
ui_url_protocol = http
email_identity =
email_server = smtp.xxxxxx.com
email_server_port = 465
email_username = reg@mritd.me
email_password = xxxxxx
email_from = docker <reg@mritd.me>
email_ssl = true
harbor_admin_password = Harbor12345
auth_mode = db_auth
ldap_url = ldaps://ldap.mydomain.com
# ldap_searchdn =
# ldap_search_pwd =
ldap_basedn = uid=%s,ou=people,dc=mydomain,dc=com
# ldap_filter =
ldap_uid = uid
ldap_scope = 3
db_password = root123
self_registration = off
use_compressed_js = on
max_job_workers = 3
token_expiration = 30
verify_remote_cert=off
customize_crt = off
# crt_country = CN
# crt_state = State
# crt_location = CN
# crt_organization = mritd
# crt_organizationalunit = mritd
# crt_commonname = mritd.me
# crt_email = reg.mritd.me

示例配置文件中,沒有被注釋的配置項即使在用不到的情況下也不能注釋。

配置存儲(可選)

Harbor默認將image存儲在本地文件系統,其它可選的位置包括S3,OpenStack Swift等。
這個配置在common/templates/registry/config.yml中的storage一節來配置。

執行安裝

修改好上述配置后,就可以執行安裝了

./install.sh

如果使用在線安裝文件,需要等待image下載完成。

注意:如果主機上的80端口已經被占用,則使用IP安裝會失敗,請給主機分配域名,並使用域名作為hostname來訪問。如果想修改默認的80端口,見修改端口號一節

安裝完成后,訪問hostname配置的域名或IP即可進入Harbor的管理頁面。
第一次使用配置文件中harbor_admin_password中的默認管理員密碼,並修改密碼。

修改端口號

對於http發布方式,Harbor默認使用80端口,需要修改端口按照如下方法:

修改docker-compose.yml中nginx的配置,將80:80的第一個80改為自定義的端口號。
修改common/templates/registry/config.yml,在auth部分$ui_url后面加上自定義的端口號
修改完成后,運行下面的命令重新配置Harbor

sudo docker-compose down
sudo install.sh

對於第一次安裝,直接修改完所有配置文件后執行install.sh就可以了。

停止/啟動Harbor

sudo docker-compose stop
sudo docker-compose start

卸載Harbor

執行如下步驟徹底刪除Harbor,以便重新安裝:

sudo docker-compose down
rm -rf /data/database
rm -rf /data/registry

修改Harbor配置

首先刪除container,修改配置,然后運行install.sh重新啟動container,命令如下:

sudo docker-compose down
vim harbor.cfg
sudo install.sh

基本使用

無論是從Harbor拉取鏡像或着發布鏡像到Harbor,第一步都是登錄Harbor這個注冊中心。

docker login ip:port

按照前文的安裝方式,即http安裝,這個命令默認都會報錯。因為Docker默認要求注冊中心以https方式工作。
命令中的端口號也不能省略,因為默認會連接https的443端口
為了讓Docker可以連接到http協議的注冊中心,需要做以下修改:

  • 對於Docker for Windows
    直接在Settings窗口Deamon選項中Insecure registries中輸入Harbor的服務地址即可,如圖:
  • 對於Linux上的Docker
    網絡中普遍留傳的方法如下:
    修改/etc/default/docker這個配置文件,增加如下內容:
    DOCKER_OPTS="$DOCKER_OPTS --insecure-registry 192.168.9.18"
    樓主實測此方法對於新版Docker不可行,主要是根部不存在/etc/default/docker這個配置文件。
    經過一番尋找,對於CentOS7以上的Docker可以使用這種方法(實測可行):
    修改文件/usr/lib/systemd/system/docker.service將其中的行:
    ExecStart=/usr/bin/dockerd
    替換為:
    ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:80
    然后執行如下命令,重新加載配置並重啟docker服務:
    systemctl daemon-reload
    systemctl restart docker
    最后執行如下命令,驗證docker的啟動參數是否為我們所要:
    ps -ef | grep docker
    對於Ubuntu16.04方法類似(未親測),修改如下配置文件:
    /lib/systemd/system/docker.service,替換其中的
    #ExecStart=/usr/bin/dockerd -H fd://

    ExecStart=/usr/bin/dockerd --insecure-registry my-docker-registry.com:5000 -H fd://
    並安裝上面介紹的方式重啟docker即可。

修改以后先把docker compose停掉,然后重啟Docker。(需要在Harbor安裝目錄下執行。(docker-compose命令都需要在doker-compose.yml所在目錄中執行))
對於Windows,在應用更改后,Docker for Windows會自動要求重啟。
對於Linux,執行下列命令:

docker-compose stop
service docker restart
docker-compose start

推送image到Harbor,注意,首先需要用tag命令建立源image與目標image的關聯

docker tag image:tag ip:port/harbor-project-name/image:tag
docker push ip:port/harbor-project-name/image:tag

ProjectAdmin及Developer兩個組的用戶有權限push,其它組用戶只可以pull

從遠程拉取image

docker pull ip:port/harbor-project-name/image:tag

關於Docker的使用可見此文檔

其它

  • 當Harbor無法工作時,首先考慮使用sudo docker-compose ps查看所有container是否正常運行
  • Harbor使用rsyslog記錄日志,如果遇到問題可以查看/var/log/harbor目錄中的日志文件來尋找原因
  • 如果使用配置文件中的密碼登錄后,無法修改admin的密碼(報錯為修改密碼失敗),可以先創建一個用戶,然后就可以成功修改admin的密碼了。
  • Harbor的數據存儲於/data/目錄下,卸載或重新安裝Harbor都不會影響這個目錄的數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM