1. 程式人生 > 其它 >7-Docker私有倉庫

7-Docker私有倉庫

1、Docker Registry分類

  • Registry用於儲存docker映象,包括映象的層次結構和元資料
  • 分類
    • Sponsor Registry:第三方red=gistry,供客戶和Docker社群使用

    • Mirror Registry:第三方,只供客戶使用

    • Vendor Registry:由釋出Docker映象的供應商提供的

    • Private Registry:通過設有防火牆和額外的安全層的私有實體提供的registry

2、建立Docker 私有倉庫

  • docker官方提供了一個私有倉庫的映象registry。

  • 主機安裝

    • 安裝部署
    # yum -y install docker-registry
    # vim /etc/docker-distribution/registry/config.yml
    version: 0.1
    log:
      fields:
        service: registry
    storage:
        cache:
            layerinfo: inmemory
        filesystem:
            rootdirectory: /var/lib/registry
    http:
        addr: :5000
    # systemctl start docker-distribution  # 啟動服務
    
    • 驗證推送
    # 檢視本地映象
    # docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              540a289bab6c        2 weeks ago         126MB
    redis               latest              de25a81a5a0b        3 weeks ago         98.2MB
    # 通過docker tag將該映象標誌為要推送到私有倉庫:
    # docker tag nginx:latest localhost:5000/nginx:latest
    
    # 推送映象到私有倉庫
    # docker push localhost:5000/nginx
    The push refers to repository [localhost:5000/nginx]
    a89b8f05da3a: Pushed
    6eaad811af02: Pushed
    b67d19e65ef6: Pushed
    latest: digest: sha256:f56b43e9913cef097f246d65119df4eda1d61670f7f2ab720831a01f66f6ff9c size: 948
    
    • 預設私有registry啟動為http協議,提交時可能會報錯,可設定為https或者設定為忽略https
# vim /etc/docker/daemon.json
{
   "registry-mirrors": ["http://hub-mirror.c.163.com"]
   "insecure-registries": ["localhost:5000"]  # 增加
}

3、容器安裝

  • docker pull
# docker pull registry:2
# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2

4、Harbor

  • docker 官方提供的私有倉庫 registry,用起來雖然簡單 ,但在管理的功能上存在不足。 Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器,harbor使用的是官方的docker registry(v2命名是distribution)服務去完成。harbor在docker distribution的基礎上增加了一些安全、訪問控制、管理的功能以滿足企業對於映象倉庫的需求。

  • Harbor的部署一般分為兩種離線和線上

    • Online installer: The online installer downloads the Harbor images from Docker hub. For this reason, the installer is very small in size.
    • Offline installer: Use the offline installer if the host to which are are deploying Harbor does not have a connection to the Internet. The offline installer contains pre-built images so it is larger than the online installer.
  • Harbor官方github地址:https://github.com/goharbor/harbor/

  • 特點

    • 支援基於使用者的訪問控制
    • 支援映象複製高可用
    • 支援圖形化使用者介面
    • 支援使用者認證管理
    • 有豐富的Restful API
  • Harbor安裝

    • Harbor安裝執行需要藉助docker compose單機編排工具

      • docker compose 可以輕鬆、高效的管理容器,它是一個用於定義和執行多容器 Docker 的應用程式工具
      # yum -y install epel-release
      # yum -y install docker-compose
      
      • 安裝Harbor
    # tar -zxf harbor.v1.9.2.tar.gz
    # vim harbor.cfg
    hostname = 192.168.10.11
    ui_url_protocol = https
    db_password = root123
    max_job_workers = 3 
    customize_crt = on
    ssl_cert = /data/db/cert/www.biglittleant.cn.crt 
    ssl_cert_key = /data/db/cert/www.biglittleant.cn.key
    secretkey_path = /data/db
    # sh ./install.sh 
    

    ​ 配置檔案解釋:

    • hostname:配置主機名稱,不可以設定127.0.0.1,localhost這樣的主機名,
    • ui_url_protocol:指定使用HTTP協議還是HTTPS協議。
    • Email settings:設定harbor的郵箱。
    • harbor_admin_password:設定管理員的初始密碼
    • auth_mode:使用者認證模式,預設是db_auth,也可以使用ldap驗證。
    • db_password:使用db需要指定連線資料庫的密碼
    • self_registration:是否允許自行註冊使用者,預設是on,新版本可以在圖形介面中修改。
    • max_job_workers:最大工作數,預設是三個

    重啟Harbor

    # docker-compose stop
    # docker-compose  up -d