docker實戰——Docker本地私有鏡像倉庫Harbor搭建及配置

Harbor介紹

        Docker容器應用的開發和運行離不開可靠的鏡像管理,雖然docker官方提供了公共的鏡像倉庫(Docker Hub),可是從安全和效率等方面考慮,部署咱們私有環境內的Registry也是很是必要的。Harbor是由VMware公司開源的企業級的Docker Registry管理項目,它包括權限管理(RBAC)、LDAP、日誌審覈、界面管理、自我註冊、鏡像複製和中文支持等功能。python

環境、軟件準備:mysql

系統:Centos 7.3nginx

Docker:version 1.12.6git

Docker-compose:version 1.14.0github

Harbor:version 1.1.2sql

注意:Harbor的全部服務組件都是在Docker中部署,因此官方安裝使用Docker-compose快速部署,因此咱們須要安裝Docker、Docker-compose。因爲Harbor是基於Docker Registry V2版本,因此就要求Docker版本不小於1.10.0,Docker-compose版本不小於1.6.0。docker

安裝、配置Harbor

安裝 docker:數據庫

# yum install docker

安裝 Docker-compose:安全

# curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
# chmod +x /usr/bin/docker-compose
# docker-compose --version
docker-compose version 1.14.0, build c7bdf9e

下載Harbor安裝包:dom

## 在線安裝包
# wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
# tar zxvf harbor-offline-installer-v1.1.2.tgz
## 離線安裝包
# wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
# tar zxvf harbor-online-installer-v1.1.2.tgz

配置Harbor:

# cd harbor
# vi harbor.conf

## Configuration file of Harbor

# hostname設置訪問地址,可使用ip、域名,不能夠設置爲127.0.0.1或localhost
hostname = 172.30.90.250

# 訪問協議,默認是http,也能夠設置https,若是設置https,則nginx ssl須要設置on
ui_url_protocol = http

# mysql數據庫root用戶默認密碼root123,實際使用時修改下
db_password = root123

max_job_workers = 3 
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA

# 郵件設置,發送重置密碼郵件時使用
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false

# 啓動Harbor後,管理員UI登陸的密碼,默認是Harbor12345
harbor_admin_password = Harbor12345

# 認證方式,這裏支持多種認證方式,如LADP、本次存儲、數據庫認證。默認是db_auth,mysql數據庫認證
auth_mode = db_auth

# LDAP認證時配置項
ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
ldap_uid = uid 
ldap_scope = 3 
ldap_timeout = 5

# 是否開啓自注冊
self_registration = on

# Token有效時間,默認30分鐘
token_expiration = 30

# 用戶建立項目權限控制,默認是everyone(全部人),也能夠設置爲adminonly(只能管理員)
project_creation_restriction = everyone

verify_remote_cert = on

修改完配置文件後,在當前目錄執行./install.sh,Harbor服務就會根據當前目錄下的docker-compose.yml開始下載依賴的鏡像,檢測並按照順序依次啓動各個服務,Harbor依賴的鏡像及啓動服務以下:

# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
vmware/harbor-jobservice    v1.1.2              ac332f9bd31c        5 weeks ago         162.9 MB
vmware/harbor-ui            v1.1.2              803897be484a        5 weeks ago         182.9 MB
vmware/harbor-adminserver   v1.1.2              360b214594e7        5 weeks ago         141.6 MB
vmware/harbor-db            v1.1.2              6f71ee20fe0c        5 weeks ago         328.5 MB
vmware/registry             2.6.1-photon        0f6c96580032        9 weeks ago         150.3 MB
vmware/harbor-notary-db     mariadb-10.1.10     64ed814665c6        3 months ago        324.1 MB
vmware/nginx                1.11.5-patched      8ddadb143133        3 months ago        199.2 MB
vmware/notary-photon        signer-0.5.0        b1eda7d10640        3 months ago        155.7 MB
vmware/notary-photon        server-0.5.0        6e2646682e3c        4 months ago        156.9 MB
vmware/harbor-log           v1.1.2              9c46a7b5e517        5 months ago        192.4 MB
photon                      1.0                 e6e4e4a2ba1b        12 months ago       127.5 MB
# docker ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                              NAMES
db8143feb3ed        vmware/nginx:1.11.5-patched        "nginx -g 'daemon off"   4 hours ago         Up 4 hours          0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
2e06132afd03        vmware/harbor-jobservice:v1.1.2    "/harbor/harbor_jobse"   4 hours ago         Up 4 hours                                                                             harbor-jobservice
b7a9985f7ef1        vmware/harbor-ui:v1.1.2            "/harbor/harbor_ui"      4 hours ago         Up 4 hours                                                                             harbor-ui
47662679ceb6        vmware/registry:2.6.1-photon       "/entrypoint.sh serve"   4 hours ago         Up 4 hours          5000/tcp                                                           registry
1b04ab83f582        vmware/harbor-db:v1.1.2            "docker-entrypoint.sh"   4 hours ago         Up 4 hours          3306/tcp                                                           harbor-db
12d96d4fc166        vmware/harbor-adminserver:v1.1.2   "/harbor/harbor_admin"   4 hours ago         Up 4 hours                                                                             harbor-adminserver
deb00fef5f97        vmware/harbor-log:v1.1.2           "/bin/sh -c 'crond &&"   4 hours ago         Up 4 hours          127.0.0.1:1514->514/tcp                                            harbor-log

 啓動完成後,咱們訪問剛設置的hostname便可:http://172.30.90.250,默認是80端口,若是端口占用,咱們能夠去修改docker-compose.yml文件中,對應服務的端口映射。

登陸Web Harbor

輸入用戶名admin,默認密碼(或已修改密碼)登陸系統。

咱們能夠看到系統各個模塊以下:

  項目:新增/刪除項目,查看鏡像倉庫,給項目添加成員、查看操做日誌、複製項目等

  日誌:倉庫各個鏡像create、push、pull等操做日誌

  系統管理:

    用戶管理:新增/刪除用戶、設置管理員等

    複製管理:新增/刪除從庫目標、新建/刪除/啓停複製規則等

    配置管理:認證模式、複製、郵箱設置、系統設置等

  其餘設置:

    用戶設置:修改用戶名、郵箱、名稱信息

    修改密碼:修改用戶密碼

注意:非系統管理員用戶登陸,只能看到有權限的項目和日誌,其餘模塊不可見。

新建項目

咱們新建一個名稱爲bourbon的項目,設置不公開。注意:當項目設爲公開後,任何人都有此項目下鏡像的讀權限。命令行用戶不須要「docker login」就能夠拉取此項目下的鏡像。

新建項目完畢後,咱們就能夠用admin帳戶提交本地鏡像到Harbor倉庫了。例如咱們提交本地nginx鏡像:

# docker login 172.30.90.250
Username: admin
Password: 
Login Succeeded

# docker tag nginx 172.30.90.250/bourbon/nginx:latest
# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
172.30.90.250/bourbon/nginx   latest              e4e6d42c70b3        8 days ago          107.5 MB
docker.io/nginx               latest              e4e6d42c70b3        8 days ago          107.5 MB

# docker push 172.30.90.250/bourbon/nginx
The push refers to a repository [172.30.90.250/bourbon/nginx]
473c450db44d: Pushed 
57842ac5be45: Pushed 
54522c622682: Pushed 
latest: digest: sha256:423210a5903e9683d2bc8436ed06343ad5955c1aec71a04e1d45bd70b0d68460 size: 948

 上傳完畢後,登陸Web Harbor,選擇項目,項目名稱bourbon,就能夠查看剛纔傳的nginx image了。

 建立用戶並不是配權限

咱們剛一直是用admin操做,實際應用中咱們使用每一個人本身的帳戶登陸。因此就須要新建用戶,同時爲了讓用戶有權限操做已經建立的項目,還必須將該用戶添加到該項目成員中。

建立用戶名爲tshan的測試用戶,點擊系統管理-》用戶管理-》建立用戶,輸入用戶名、郵箱、密碼等信息。

將tshan用戶添加到bourbon項目成員中,點擊項目-》bourbon-》成員-》新建成員,填寫姓名,選擇角色。

 

如今咱們使用tshan帳戶本地模擬操做pull剛上傳的nginx鏡像。

# docker rmi -f 172.30.90.250/bourbon/nginx
Untagged: 172.30.90.250/bourbon/nginx:latest
Untagged: 172.30.90.250/bourbon/nginx@sha256:423210a5903e9683d2bc8436ed06343ad5955c1aec71a04e1d45bd70b0d68460

# docker logout 172.30.90.250
Remove login credentials for 172.30.90.250
# docker login 172.30.90.250
Username: tshan
Password: 
Login Succeeded

# docker pull 172.30.90.250/bourbon/nginx:latest
Trying to pull repository 172.30.90.250/bourbon/nginx ... 
latest: Pulling from 172.30.90.250/bourbon/nginx
Digest: sha256:423210a5903e9683d2bc8436ed06343ad5955c1aec71a04e1d45bd70b0d68460

FAQ

1.配置並啓動Harbor後,本地執行登陸操做,報錯:

# docker login 172.30.90.250
Username: admin
Password: 
Error response from daemon: Get https://172.30.90.250/v1/users/: dial tcp 172.30.90.250:443: getsockopt: connection refused

這是由於docker1.3.2版本開始默認docker registry使用https,這裏Harbor默認設置的http的方式,因此當執行用docker login、pull、push等命令操做非https的docker registry的時候就會報錯。

能夠修改配置/etc/sysconfig/docker, 將OPTIONS增長--insecure-registry 172.30.90.250。

2.管理Harbor

若是須要修改Harbor的配置文件harbor.cfg,由於Harbor是基於docker-compose服務編排的,咱們可使用docker-compose命令重啓Harbor。

不修改配置文件,重啓Harbor命令:

# docker-compose start | stop | restart  
相關文章
相關標籤/搜索