banner
JohnsonSimon

JohnsonSimon

email
github

Docker 建立私人倉庫

docker 搭建私人倉庫有下面幾種方式:

  • 1、docker hub 官方私人鏡像倉庫
  • 2、本地私有倉庫

官方私人鏡像倉庫搭建很簡單 (就是需要有魔法,否則就異步到第二種方法吧),只需要 login、pull、tag、push 幾種命令就完事了。而本地私人鏡像倉庫則比較麻煩一點而且只能存儲在本地不能公開。

下面我們就來簡單的介紹一下怎麼搭建自己的私人倉庫吧!

官方鏡像倉庫#

首先,我們需要在 docker hub 這裡申請註冊一個帳號並登錄,同時也要在 Docker Desktop 中進行登錄。完成登錄以後,我們首先在命令行中使用命令進行登錄

docker login

出現 Login Succeeded 就代表登錄成功了!
image

注:你的身份驗證憑證將被存儲在本地目錄的 .dockercfg 文件中

接著我們查看一下本地鏡像,可以看到這裡有一個 nginx,待會兒就拿這個進行測試吧!

docker images

image

首先對鏡像打上 tag,也就是重命名。

注:重命名格式需要 用戶名 / 鏡像名:版本號

docker tag nginx codegetters/nginx:1.0.0

image

檢查一下看看是否成功打上了 tag

image

到了這裡我們就完成了大部分的工作了,只需要 push到自己的帳號中就好了。

注:push 的鏡像名要寫全包括最後的版本號,否則就會失敗

docker push codegetters/nginx:1.0.0

image

完成以後我們就可以刪除本地鏡像了,不過刪除不是我們的重點就不過多展示了。我們接著進入 docker hub 並登錄自己的帳號。點擊 Repositories 就可以看到我們的倉庫中已經有了 nginx

image

到了這裡我們就算完成了,如果想要從自己的倉庫中拉下來就執行下面的命令即可

docker pull codegetters/nginx:1.0.0

本地私有倉庫#

為什麼使用私用倉庫?
公司的項目一般不予許我們上傳到 Docker Hub 這類的公共倉庫中,所有學會創建一個私有倉庫也是非常必要的。雖然 hub.docker 上可以保存鏡像,但是網速相對較慢,在內部環境中搭建一個私有的公共倉庫是個更好的方案。

官方提供了 docker hub 來作為一個公開的集中倉庫。然而,本地訪問 Docker Hub 速度往往很慢,並且很多時候需要一個本地的私有倉庫只供網內使用。

registry 就是管理 docker 鏡像的服務。接下來的操作也是主要使用 registry 這個鏡像進行,

首先我們先拉取 registry 鏡像

docker pull registry

image

接著讓 registry 跑起來並且將鏡像的 /var/lib/registry 掛載到我們的本地 E:\software_cache\docker 這個目錄中,同時將本地的 5000 端口映射到鏡像中

docker run -d -p 5000:5000 -v E:\software_cache\docker:/var/lib/registry --restart=always registry

image

運行成功後可以訪問 ip:5000/v2 如果是下圖的狀態就算運行成功了。
image

訪問 ip:5000/v2/_catalog 查看鏡像倉庫情況,這裡的空數組表明還沒有上傳任何鏡像
image

接下來我們打開 docker desktop 打開設置,將自己的 ip:5000 添加到下面的數組中 (沒有的話需要自己添加) 以此允許本地推送鏡像,如果是 Linux 的話,則需要找到 /etc/docker/daemon.json (沒有需要自己創建)

  "insecure-registries": [
    "http://xxx.xxx.xxx.xxx:5000"
  ],

image

完成設置以後,我們就可以安按照上面的操作流程了。先對鏡像打上 tag 並檢查一下

注:重命名格式需要 用戶名 / 鏡像名:版本號

docker tag nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

docker images

image

完成 tag 後就將鏡像推送到我們的本地倉庫了

注:push 的鏡像名要寫全包括最後的版本號,否則就會失敗

docker push xxx.xxx.xxx.xxx:5000/nginx:1.0.0

image

這個時候我們訪問剛才的頁面,就顯示了剛才推送的鏡像 - nginx
image

當然,我們也可以使用命令也可以進行查看是否成功推送

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog

image

也可以使用這個命令來訪問本地倉庫的 tag 列表

curl http://xxx.xxx.xxx.xxx:5000/v2/_catalog | python -m json.tool

image

我們來運行一下 registry 中的鏡像看看是否運行能夠運行成功。這裡我是將本地的 80 端口映射到 nginx 中的 80 端口了

docker run -d -p 80:80 --name nginx xxx.xxx.xxx.xxx:5000/nginx:1.0.0

image

我們訪問一下本地 ip:80 出現了 nginx 頁面就表明搭建成功了!
image

使用 Harbor 管理倉庫#

什麼是 Harbor

harbor 是一個由 vm 公司開源的企業級容器鏡像倉庫,有以下功能:
管理用戶界面
基於角色的訪問控制
LDAP/AD 集成及日誌審計等基本運維操作

Harbor 的三種安裝方式 (這裡我就選擇 離線安裝了):

  • 在線安裝:從 Docker Hub 下載 Harbor 相關鏡像,因此安裝軟件包非常小
  • 離線安裝:安裝包包含部署的相關鏡像,因此安裝包比較大
  • OVA 安裝程序(第三方):當用戶具有 vCenter 環境時,使用此安裝程序,在部署 OVA 後啟動 Harbor

前置準備:下載 Harbor online 安裝包 中的 harbor-offline-installer-vx.x.x.tgz到本地進行解壓縮,然後將 harbor.yml.tmpl 文件複製並重命名為 harbor.yml,接著使用文本編輯器打開並修改 hostname 為本地 ip 地址。如果說你不使用 https 進行訪問 (一般都是內網使用),那就將相關的配置都給註釋掉。只註釋關於 https 的內容就好了,其他內容最好不要動。

image

然後打開命令行進入這個目錄中,使用 docker 加載本地鏡像

docker load -i harbor.v2.10.1.tar.gz

image

加載完成後我們檢查一下已經成功加載了 Harbor 本地鏡像了
image

使用 ./prepare 預處理一些文件,初始化文件

image

接下來執行 install.sh 就正式開始安裝了

image

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。