平時製作完 docker image,如果要讓其他裝置方便使用,除了將 docker images 匯出成檔案以外,最方便的方式就是上傳到官方的 image 儲存庫,這樣就可以直接使用 docker pull 指令將 image 下載下來使用。
但是在官方的儲存庫中,免費版有許多限制,所以如果環境允許,建立自己的私有 docker 儲存庫是一個很棒的選擇。
既然都使用 docker 了,我們可以使用 docker 快速建立私有儲存庫,只要一行指令:
上面指令的意思在於將容器內部的 5000 連接埠映射到外部,指定容器會自動重啟,將檔案卦載到本機的 /data/docker-registry 路徑,指定容器名稱為 registry ,使用的 image 為 registry:2
需要先打上標籤,格式為:
以上面的範例舉例:
image 名稱: my-nuxt-app
標籤:latest
私有儲存庫位置:192.168.0.40:5000
上傳 image:
如果出現以下錯誤訊息:
代表是 http 不安全,可以參考這篇文章: 延伸閱讀: docker 從私有儲存庫拉取映像檔 沒有 https 解決方式 教學
設定完成後就會發現可以上傳了:
就可以查看有多少 image:
(這裡只有 my-nuxt-app 一個)
查詢指定的 image 的所有 tag (記得替換 ip 和指定的 image 名稱):
這裡就會看到筆者上傳的 my-nuxt-app 有兩個版本,分別是 v1 和 lastest
註: 在上面建立的 docker 私有儲存庫中並沒有進行身份驗證,非常不安全,不要公開讓外部使用。下篇文章再來加上身份驗證。
參考資料:
docker hub - registry
CNCF Distribution - Deploy a registry server
但是在官方的儲存庫中,免費版有許多限制,所以如果環境允許,建立自己的私有 docker 儲存庫是一個很棒的選擇。
既然都使用 docker 了,我們可以使用 docker 快速建立私有儲存庫,只要一行指令:
docker run -d -p 5000:5000 --restart=always -v /data/docker-registry:/var/lib/registry --name registry registry:2
上面指令的意思在於將容器內部的 5000 連接埠映射到外部,指定容器會自動重啟,將檔案卦載到本機的 /data/docker-registry 路徑,指定容器名稱為 registry ,使用的 image 為 registry:2
上傳 docker image
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nuxt-app latest 9890e8de4b90 13 months ago 1.23GB
需要先打上標籤,格式為:
docker tag [image名稱]:[標籤] [私有儲存庫位置]/[image名稱]:[標籤]
以上面的範例舉例:
image 名稱: my-nuxt-app
標籤:latest
私有儲存庫位置:192.168.0.40:5000
docker tag my-nuxt-app:latest 192.168.0.40:5000/my-nuxt-app:latest
上傳 image:
docker push 192.168.0.40:5000/my-nuxt-app:latest
如果出現以下錯誤訊息:
docker push 192.168.0.40:5000/my-nuxt-app:latest
The push refers to repository [192.168.0.40:5000/my-nuxt-app]
Get "https://192.168.0.40:5000/v2/": http: server gave HTTP response to HTTPS client
代表是 http 不安全,可以參考這篇文章: 延伸閱讀: docker 從私有儲存庫拉取映像檔 沒有 https 解決方式 教學
設定完成後就會發現可以上傳了:
docker push 192.168.0.40:5000/my-nuxt-app:latest
The push refers to repository [192.168.0.40:5000/my-nuxt-app]
eb041e2412bc: Pushed
34a83e9a9a9e: Pushing [====================================> ] 110MB/152.4MB
9da4ba1aa180: Pushing [======> ] 111.8MB/896.4MB
f28f2152f832: Pushed
d04b078a26a5: Pushed
0f6f412c7da8: Pushed
a844c5719a1c: Pushed
08a0d6bc43d2: Pushing [==============================================> ] 150.4MB/162MB
cc2447e1835a: Pushed
下載 docker image
拉取的方式和平時幾乎一模一樣,只是前面多了我們私有儲存庫的位置而已:
docker pull 192.168.0.40:5000/my-nuxt-app:latest
查看私有儲存庫的 images 清單
開啟網頁(記得替換為自己的 ip):
http://192.168.0.40:5000/v2/_catalog
就可以查看有多少 image:
(這裡只有 my-nuxt-app 一個)
{
"repositories": [
"my-nuxt-app"
]
}
查詢指定的 image 的所有 tag (記得替換 ip 和指定的 image 名稱):
http://192.168.0.40:5000/v2/my-nuxt-app/tags/list
這裡就會看到筆者上傳的 my-nuxt-app 有兩個版本,分別是 v1 和 lastest
{
"name": "my-nuxt-app",
"tags": [
"v1",
"latest"
]
}
註: 在上面建立的 docker 私有儲存庫中並沒有進行身份驗證,非常不安全,不要公開讓外部使用。下篇文章再來加上身份驗證。
參考資料:
docker hub - registry
CNCF Distribution - Deploy a registry server
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com