安裝Harbor並修改默認使用的80端口


一、Harbor

容器應用的開發和運行離不開可靠的鏡像管理。從安全和效率等方面考慮,部署在私有環境內的Registry是非常必要的。Harbor 是由 VMware 公司中國團隊為企業用戶設計的 Registry server 開源項目,包括了權限管理(RBAC)、LDAP、審計、管理界面、自我注冊、HA 等企業必需的功能,同時針對中國用戶的特點,設計鏡像復制和中文支持等功能。

Harbor官網

二、安裝Harbor的前提條件

根據官網說明,簡單描述一下安裝Harbor前需要的主要條件:

硬件 最低要求 推薦
CPU 2 CPU 4 CPU
內存 4 GB 8 GB
硬盤 40 GB 160 GB
軟件 版本
Docker engine 17.06.0-ce+或更高
Docker Compose 1.18.0或更高

三、部署規划

說明 規划
服務器IP 192.168.113.48
端口 8930
安裝目錄 /home/work/harbor
數據映射目錄 /home/work/harbor/data
日志映射目錄 /home/work/harbor/logs
Harbor管理員密碼 h12345

Harbor的http協議默認端口為80,https協議默認端口為443;本次安裝屬於公司內網,無需https,采用http即可。為避免產生端口沖突,可以自己修改端口

Harbor的數據映射目錄默認為/data,日志映射目錄默認為/var/log/harbor;此處為了統一管理,將數據目錄和日志目錄統一放在安裝目錄之下。

Harbor安裝成功后,會生成一個管理員用戶,用戶名為admin,密碼默認為Harbor12345,密碼可改可不改。

四、安裝Harbor

  • 安裝方式:可在線安裝或離線安裝。本次安裝采用離線安裝方式。

  • 下載安裝包,本次安裝時最新版本為2.1.0,可自行選擇安裝版本。將harbor-offline-installer-v2.1.0.tgz下載到windows本地,然后通過ftp工具將文件上傳到/home/work目錄下。官方最新版地址

  • 解壓安裝包,解壓后就會在當前目錄生成一個harbor目錄

    tar xvf harbor-offline-installer-v2.1.0.tgz
    

    BFevUx.png

    解壓后會目錄中就會包含上圖中所示文件,其中harbor.yml.tmpl文件就是Harbor的模板配置文件。

  • 拷貝一份harbor.yml.tmpl文件命名為harbor.yml,並按照規划編輯並保存該文件

    cp harbor.yml.tmpl harbor.yml
    vim harbor.yml
    

    BFKqW6.png

    BFKbJx.png

    BFKHF1.png

  • 由於沒有使用https,為了避免Harbor啟動后不能從Docker中登錄到Harbor當中,需要修改並保存Docker的配置

    vim /usr/lib/systemd/system/docker.service
    
    #需要修改的地方
    ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.113.48:8930
    

    BF1Bpq.png

    ExecStart這一行的末尾加上--insecure-registry=IP:端口

  • 重新加載配置,並重啟Docker服務(生產環境慎用!!!)

    #重新加載配置
    systemctl daemon-reload
    #重啟Docker服務
    systemctl restart docker
    
  • 每次修改harbor的配置文件之后,都需要在安裝目錄下執行prepare命令,否則配置文件不生效

    [root@node03 harbor]# ./prepare 
    prepare base dir is set to /home/work/harbor
    WARNING:root:WARNING: HTTP protocol is insecure. Harbor will deprecate http protocol in the future. Please make sure to upgrade to https
    Generated configuration file: /config/portal/nginx.conf
    Generated configuration file: /config/log/logrotate.conf
    Generated configuration file: /config/log/rsyslog_docker.conf
    Generated configuration file: /config/nginx/nginx.conf
    Generated configuration file: /config/core/env
    Generated configuration file: /config/core/app.conf
    Generated configuration file: /config/registry/config.yml
    Generated configuration file: /config/registryctl/env
    Generated configuration file: /config/registryctl/config.yml
    Generated configuration file: /config/db/env
    Generated configuration file: /config/jobservice/env
    Generated configuration file: /config/jobservice/config.yml
    Generated and saved secret to file: /data/secret/keys/secretkey
    Successfully called func: create_root_cert
    Generated configuration file: /compose_location/docker-compose.yml
    Clean up the input dir
    

    命令執行完成之后,目錄內容如下圖所示:

    BFYGdO.png

  • 編輯並保存docker-compose.yml文件

    proxy:
        image: goharbor/nginx-photon:v2.1.0
        container_name: nginx
        restart: always
        cap_drop:
          - ALL
        cap_add:
          - CHOWN
          - SETGID
          - SETUID
          - NET_BIND_SERVICE
        volumes:
          - ./common/config/nginx:/etc/nginx:z
          - type: bind
            source: ./common/config/shared/trust-certificates
            target: /harbor_cust_cert
        networks:
          - harbor
        dns_search: .
        ports:
          #此處原本為80:8080,將80端口修改為8930端口
          - 8930:8080
        depends_on:
          - registry
          - core
          - portal
          - log
    
  • 利用docker-compose啟動harbor

    docker-compose up -d
    

    啟動成功如下圖所示:

    BFtx3j.png

五、驗證Harbor

  • 在瀏覽器中輸入ip:端口,訪問Harbor的Web頁面,用戶名為admin,密碼為自己設置的密碼。

    BFUnJg.png

    BFUuWQ.png

  • 在docker中登錄harbor,用戶和密碼同上

    [root@node03 harbor]# docker login 192.168.113.48:8930
    Username: admin
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded
    You have new mail in /var/spool/mail/root
    [root@node03 harbor]#
    
  • 將本地鏡像打上tag,然后將鏡像push到harborn當中(push鏡像步驟:login-->tag-->push

    [root@node03 harbor]# docker tag mysql:5.7 192.168.113.48:8930/library/mysql:5.7
    [root@node03 harbor]# docker images
    REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
    sonatype/nexus3                     latest              d4fbb85e8101        2 days ago          634MB
    gitlab/gitlab-ce                    latest              b0c27d1707a0        6 days ago          1.98GB
    192.168.113.48:8930/library/mysql   5.7                 42cdba9f1b08        9 days ago          448MB
    mysql                               5.7                 42cdba9f1b08        9 days ago          448MB
    jenkins/jenkins                     lts                 f669140ba6ec        2 weeks ago         711MB
    goharbor/redis-photon               v2.1.0              45fa455a8eeb        5 weeks ago         68.7MB
    goharbor/harbor-registryctl         v2.1.0              98f466a61ebb        5 weeks ago         132MB
    goharbor/registry-photon            v2.1.0              09c818fabdd3        5 weeks ago         80.1MB
    goharbor/nginx-photon               v2.1.0              470ffa4a837e        5 weeks ago         40.1MB
    goharbor/harbor-log                 v2.1.0              402802990707        5 weeks ago         82.1MB
    goharbor/harbor-jobservice          v2.1.0              ff65bef832b4        5 weeks ago         165MB
    goharbor/harbor-core                v2.1.0              26047bcb9ff5        5 weeks ago         147MB
    goharbor/harbor-portal              v2.1.0              5e97d5e230b9        5 weeks ago         49.5MB
    goharbor/harbor-db                  v2.1.0              44c0be92f223        5 weeks ago         164MB
    goharbor/prepare                    v2.1.0              58d0e7cee8cf        5 weeks ago         160MB
    [root@node03 harbor]# docker push 192.168.113.48:8930/library/mysql:5.7
    The push refers to repository [192.168.113.48:8930/library/mysql]
    bdda49371b83: Pushed 
    78a9edf56b5f: Pushed 
    2e19acd09cf6: Pushed 
    30f9c7764a3f: Pushed 
    15b463db445c: Pushed 
    c21e35e55228: Pushed 
    36b89ee4c647: Pushed 
    9dae2565e824: Pushed 
    ec8c80284c72: Pushed 
    329fe06a30f0: Pushed 
    d0fe97fa8b8c: Pushed 
    5.7: digest: sha256:3830eda172a0285aa9899c422f26d739cde0ad5445962fbb9a2a8b0df00a1a64 size: 2621
    [root@node03 harbor]# 
    
    

    到harbor中查看,發現鏡像已經成功push:

    BFdoi8.png

  • 從harbor當中拉取鏡像

    先將鏡像刪除,然后從harbor中pull鏡像:

    [root@node03 harbor]# docker rmi 192.168.113.48:8930/library/mysql:5.7
    Untagged: 192.168.113.48:8930/library/mysql:5.7
    Untagged: 192.168.113.48:8930/library/mysql@sha256:3830eda172a0285aa9899c422f26d739cde0ad5445962fbb9a2a8b0df00a1a64
    [root@node03 harbor]# docker images
    REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
    sonatype/nexus3               latest              d4fbb85e8101        2 days ago          634MB
    gitlab/gitlab-ce              latest              b0c27d1707a0        6 days ago          1.98GB
    mysql                         5.7                 42cdba9f1b08        9 days ago          448MB
    jenkins/jenkins               lts                 f669140ba6ec        2 weeks ago         711MB
    goharbor/redis-photon         v2.1.0              45fa455a8eeb        5 weeks ago         68.7MB
    goharbor/harbor-registryctl   v2.1.0              98f466a61ebb        5 weeks ago         132MB
    goharbor/registry-photon      v2.1.0              09c818fabdd3        5 weeks ago         80.1MB
    goharbor/nginx-photon         v2.1.0              470ffa4a837e        5 weeks ago         40.1MB
    goharbor/harbor-log           v2.1.0              402802990707        5 weeks ago         82.1MB
    goharbor/harbor-jobservice    v2.1.0              ff65bef832b4        5 weeks ago         165MB
    goharbor/harbor-core          v2.1.0              26047bcb9ff5        5 weeks ago         147MB
    goharbor/harbor-portal        v2.1.0              5e97d5e230b9        5 weeks ago         49.5MB
    goharbor/harbor-db            v2.1.0              44c0be92f223        5 weeks ago         164MB
    goharbor/prepare              v2.1.0              58d0e7cee8cf        5 weeks ago         160MB
    [root@node03 harbor]# docker pull 192.168.113.48:8930/library/mysql:5.7
    5.7: Pulling from library/mysql
    Digest: sha256:3830eda172a0285aa9899c422f26d739cde0ad5445962fbb9a2a8b0df00a1a64
    Status: Downloaded newer image for 192.168.113.48:8930/library/mysql:5.7
    192.168.113.48:8930/library/mysql:5.7
    [root@node03 harbor]# docker images
    REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
    sonatype/nexus3                     latest              d4fbb85e8101        2 days ago          634MB
    gitlab/gitlab-ce                    latest              b0c27d1707a0        6 days ago          1.98GB
    192.168.113.48:8930/library/mysql   5.7                 42cdba9f1b08        9 days ago          448MB
    mysql                               5.7                 42cdba9f1b08        9 days ago          448MB
    jenkins/jenkins                     lts                 f669140ba6ec        2 weeks ago         711MB
    goharbor/redis-photon               v2.1.0              45fa455a8eeb        5 weeks ago         68.7MB
    goharbor/harbor-registryctl         v2.1.0              98f466a61ebb        5 weeks ago         132MB
    goharbor/registry-photon            v2.1.0              09c818fabdd3        5 weeks ago         80.1MB
    goharbor/nginx-photon               v2.1.0              470ffa4a837e        5 weeks ago         40.1MB
    goharbor/harbor-log                 v2.1.0              402802990707        5 weeks ago         82.1MB
    goharbor/harbor-jobservice          v2.1.0              ff65bef832b4        5 weeks ago         165MB
    goharbor/harbor-core                v2.1.0              26047bcb9ff5        5 weeks ago         147MB
    goharbor/harbor-portal              v2.1.0              5e97d5e230b9        5 weeks ago         49.5MB
    goharbor/harbor-db                  v2.1.0              44c0be92f223        5 weeks ago         164MB
    goharbor/prepare                    v2.1.0              58d0e7cee8cf        5 weeks ago         160MB
    [root@node03 harbor]# 
    

    拉取鏡像是否有權限需要根據harbor項目權限和項目的成員權限共同決定,若harbor中項目為公開項目,則不用登錄harbor即可pull鏡像;若項目為私有,則只有項目中的成員能夠對鏡像進行下一步操作。具體權限請參照官方文檔。

    harbor中成員角色權限說明


免責聲明!

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



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