1. 程式人生 > 實用技巧 >Docker私有倉庫的搭建

Docker私有倉庫的搭建

平時我們執行docker pull xxx的時候都是從預設的公共倉庫下載映象,實際在工作中,我們不能把企業專案push到公共倉庫,所以為了更好的管理映象,搭建一個本地的私有倉庫也很有必要,這裡主要介紹兩種方式搭建私有倉庫。

一、registry搭建

1、搭建

Docker官方有提供搭建私有倉庫的基礎映象registry,直接下載執行容器即可,注意容器預設使用的是5000埠,需要映射出去;預設將上傳的映象儲存在容器內的/var/lib/registry目錄下,需要將此目錄對映到主機上,避免資料丟失。
docker search registry

docker pull registry:latest
docker run -d -v /usr/local/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:latest

瀏覽器訪問http://{ip}:5000/v2,我是安裝在虛擬機器上,訪問http://192.168.2.17:5000/v2

即安裝完成!

2、使用驗證

將本地映象push到私有倉庫中來驗證一下
檢視本地映象:docker images,我們選擇將postgres映象push

要通過docker tag將該映象標誌為要推送到私有倉庫
docker tag postgres:11.8 localhost:5000/postgres:11.8
然後通過docker push將標記後的映象推送至私有倉庫
docker push localhost:5000/postgres:11.8
之後訪問http://192.168.2.17:5000/v2/_catalog檢視私有倉庫目錄,確認是否上傳成功:

二、harbor的搭建

上述方法雖然簡單,但是在管理的功能上還有些不足,為此Docker官方還提供一個Harbor的服務,是一個用於儲存和分發Docker映象的企業級Registry伺服器,增加了一些安全、訪問控制、管理的功能以滿足企業對於映象倉庫的需求。

1、搭建

  • 安裝要求
    伺服器上要先安裝好docker和docker-compose,對於v2.1.0版本的要求文件中有要求說明,docker-compose的安裝和介紹會再做說明

  • 下載
    地址為: https://github.com/goharbor/harbor/releases ,本文下載的是v2.1.0

  • 安裝配置
    vim /etc/docker/daemon.json

    ,新增{ "insecure-registries":["192.168.2.17:9090"] },寫上自己的ip,若沒有這個檔案則新建一個,然後再繼續後面的按照,否則登入時可能會出現報錯,修改完之後重啟docker:systemctl restart docker

    [NOTE]
    由於從docker1.3.2版本開始,使用registry時,必須使用TLS保證其安全。我們不用https的話,需要在客戶機中增加一個配置檔案

    將下載好的安裝包harbor-offline-installer-v2.1.0.tgz上傳伺服器並解壓
    tar -xvf harbor-offline-installer-v2.1.0.tgz

    建立配置檔案,cp harbor.yml.tmpl harbor.yml
    修改配置,vim harbor.ym,主要修改http選項中的ip和埠

    進行安裝,./prepare && ./install.sh
    最後顯示"✔ ----Harbor has been installed and started successfully.----"安裝成功,執行docker ps檢視執行的容器

    檢視安裝完成後的目錄結構

    安裝完成後有生成docker-compose.yml檔案,後續的服務的啟停等操作可以用docker-compose命令,如停止服務docker-compose down,啟動服務docker-compose up -d

2、登入驗證

  • 訪問設定好的ip和埠,我的是http://192.168.2.17:9090

  • 登入,預設的admin使用者密碼是Harbor12345,也可以在安裝的時候通過修改harbor.yml檔案來更改。

    可以建立專案,建立使用者,給專案分配使用者等等,操作都很簡單 。

3、上傳映象

  • 首先要登陸私有倉庫,可以使用admin或者建立好的擁有對應許可權的使用者
    docker login -u admin -p Harbor12345 192.168.2.17:9090

  • 上傳自己的映象
    docker tag postgres:11.8 192.168.2.17:9090/library/postgres:11.8,其中library是專案名稱,可以自己建立,我用的是預設的
    docker push 192.168.2.17:9090/library/postgres:11.8

    [NOTE]
    若之前沒有配置/etc/docker/daemon.json檔案的話,這一步可能會出現報錯:Error response from daemon: Get https://192.168.2.17:9090/v2/: http: server gave HTTP response to HTTPS client

    登入網頁檢視

    至此完成Harbor的簡單部署!