建立私有 Docker Registry

閱讀時間約 10 分鐘
raw-image

前言

該如何自架 docker registry 呢? docker registry 可以幫助我們做什麼事情呢? docker registry 是可以將我們打包好的 docker image,放置到 docker registry 上面,在我們開始要佈署服務時,從 docker registry 拉取我們打包好的 image 進行佈署,也就是說 docker registry 是我們存放 images 的倉庫,今天我們將教大家如何自架 docker registry,建造我們的私有倉庫。

準備主機

準備一台主機,先在本機安裝 docker engine 和 docker compose,接著安裝 apache2-utils 和 mkcert,我們要使用 apache2-utils 來控管伺服器內部存取身分,Docker Registry 支援帳密登入,前提要啟用 TLS HTTPS 連線,並使用 htpasswd 工具設定雜湊密碼檔,且安裝 mkcert 建立 TLS 憑證,以下安裝指令

sudo apt-get install apache2-utils mkcert

建立 /var/registry/certs 路徑,並切換到此路徑

sudo mkdir -p /var/registry/certs

cd /var/registry/certs

接著在/var/registry/certs 路徑,建立 TSL 憑證

sudo mkcert -install

|_ The local CA is already installed in the system trust store! 👍

sudo mkcert localhost

|_ Created a new certificate valid for the following names 📜

|_ - "localhost"

|_

|_ The certificate is at "./localhost.pem" and the key at "./localhost-key.pem"

|_

|_ It will expire on 5 January 2026 🗓

ls *.pem

|_ localhost-key.pem localhost.pem

建立 /var/registry/auth 路徑,並切換此路徑

sudo mkdir -p /var/registry/auth

cd /var/registry/auth

接著在 /var/registry/auth 路徑,建立帳號密碼

sudo htpasswd -Bbn user 123456 | sudo tee ./htpasswd > /dev/null

ls -l htpasswd

|_ -rw-r--r-- 1 root root 67 Oct 5 02:47 htpasswd

cat htpasswd

|_ user:$2y$05$g/sNIT/FM4rWtEIDvjTLEuuj3wGWAwxzgQgcVRK0vC/6KVr6uRNtu

準備 Docker Compose 安裝 registry 以及 docker registry browser 這兩個鏡像

version: "3"
services:
registry:
container_name: registry
restart: always
image: registry:2
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/localhost.pem
REGISTRY_HTTP_TLS_KEY: /certs/localhost-key.pem
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_STORAGE_DELETE_ENABLED: true
volumes:
- /var/registry/data:/var/lib/registry
- /var/registry/certs:/certs
- /var/registry/auth:/auth
docker_registry_browser:
container_name: docker_registry_browser
restart: always
image: klausmeyer/docker-registry-browser
ports:
- 8080:8080
environment:
DOCKER_REGISTRY_URL: https://192.168.18.35:5000
NO_SSL_VERIFICATION: true
TOKEN_AUTH_USER: user
TOKEN_AUTH_PASSWORD: 123456
ENABLE_DELETE_IMAGES: true
volumes:
- /var/registry/certs:/certs

registry 鏡像

registry 是 docker 推出的鏡像,可以來建造我們的私有倉庫,快速提升開發效率,減少伺服器資源負擔

registry 的 environment 設定

REGISTRY_HTTP_TLS_CERTIFICATE: 取得剛才使用 mkcert 的 localhost.pem 檔案路徑

REGISTRY_HTTP_TLS_KEY: 取得剛才使用 mkcert 的 localhost-key.pem 檔案路徑

REGISTRY_AUTH: 設定驗證 http 環境變數

REGISTRY_AUTH_HTPASSWD_PATH: 設定驗證 http 檔案路徑

REGISTRY_AUTH_HTPASSWD_REALM: 設定驗證網域名稱

REGISTRY_STORAGE_DELETE_ENABLED: 啟用 registry 倉庫可被刪除

docker registry browser 鏡像

docker registry browser 是我個人推薦的一個鏡像,可以用來查看 docker registry 裡面有那些鏡像,並且提供刪除鏡像功能

docker registry browser 的 environment 設定

DOCKER_REGISTRY_URL: 設定 docker registry 位置

NO_SSL_VERIFICATION: 設定是否啟用 SSL 驗證

TOKEN_AUTH_USER: 設定 docker registry 登入使用者名稱

TOKEN_AUTH_PASSWORD: 設定 docker registry 登入密碼

ENABLE_DELETE_IMAGES: 設定是否啟用鏡像刪除按鈕

檢查 docker registry 是否運作正常

當安裝完 docker registry 後,在瀏覽器輸入我們鏡像倉庫網址: https://{自己的 ip}:{自己設定的 port}/v2,然後會要求輸入帳號密碼,輸入剛才我們設定的帳號密碼

raw-image

登入完成後會進入一個空物件話面代表成功

raw-image

再來輸入 https://{自己的 ip}:{自己設定的 port}/v2/_catalog,這可以看自己有上傳那些鏡像,目前當然是沒有

raw-image

檢查 docker registry browser 是否運作正常

安裝完 docker registry browser 輸入 http://{自己 ip}:{自己設定的 port},來檢查 docker registry browser 是否正常,然後會要求輸入帳號密碼,輸入剛才我們設定的帳號密碼

raw-image

登入完成後會進入一個 docker registry browser 畫面,會更清楚裡面有哪些 image,現在是還沒有任何 image 的狀態

raw-image

實際操作上傳 docker registry 倉庫

在所有服務建置完成後,我們來實際上傳 image 套我們的倉庫,首先先抓取 nginx 的 alpine 版本

docker pull nginx:alpine

接著我們對這個 image 給一個新的 tag image

docker tag 192.168.18.35:5000/nginx:alpine

接著先登入我們的 docker registry,輸入以下指令後,會要求我們輸入帳號密碼,也就是先前我們設定的帳號密碼

docker login 192.168.18.35:5000

登入成功後,再來上傳我們的 image

docker push 192.168.18.35:5000/nginx:alpine

如果上傳出現以下訊息

The push refers to repository [192.168.18.35:5000/nginx]

Get "https://192.168.18.35:5000/v2/": tls: failed to verify certificate: x509: cannot validate certificate for 192.168.44.136 because it doesn't contain any IP SANs

如果是 linux 在本機 /etc/docker/ 底下建立 daemon.json 檔案,建立以下內容

{

"group": "dockerroot",

"insecure-registries": [

"192.168.44.136:5000"

],

"live-restore": true

}

如果是 windows 直接在 docker desktop 新增相同內容

raw-image

最後再輸入一次剛才的 docker push 即可上傳成功,然後在瀏覽器打開 docker registry browser 即可看到 nginx alpine 版本

raw-image


10會員
49內容數
d3.js 圖形
留言0
查看全部
發表第一個留言支持創作者!
Tim Bai的沙龍 的其他內容
npm 做為 node 套件版本管理工具,今天來學習如何使用 npm 升級 package.json 版號管理,可以對一個專案版號管理更加制式化 major 目標升級版號 指令 npm version --new-version major 範例 v1.0.0 -> v2.0.0 mi
一般來說 Docker 剛安裝完成時,會需要使用管理權限來運行 Docker,那如果不想使用 sudo 權限運行,又想直接使用 Docker 命令,以下有幾種遵循方式 1. 將使用者名稱加入至 Docker 中 sudo usermod -aG docker $USER 2. 再來切換使用者使
前言 Vue 是一個現代開發框架,擁有完尚的生態系,讓我們可以將須多元件客製化,做出組件,並且可重複利用,高擴充性。在開發組件時,每個組件都擁有自己的生命周期,Vue 組件會偵測每個變數值,是否有變,並且更新內容,今天要一個一個了解 Vue 的生命週期,讓大家有更多認識。 Vue 的生命週期
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
npm 做為 node 套件版本管理工具,今天來學習如何使用 npm 升級 package.json 版號管理,可以對一個專案版號管理更加制式化 major 目標升級版號 指令 npm version --new-version major 範例 v1.0.0 -> v2.0.0 mi
一般來說 Docker 剛安裝完成時,會需要使用管理權限來運行 Docker,那如果不想使用 sudo 權限運行,又想直接使用 Docker 命令,以下有幾種遵循方式 1. 將使用者名稱加入至 Docker 中 sudo usermod -aG docker $USER 2. 再來切換使用者使
前言 Vue 是一個現代開發框架,擁有完尚的生態系,讓我們可以將須多元件客製化,做出組件,並且可重複利用,高擴充性。在開發組件時,每個組件都擁有自己的生命周期,Vue 組件會偵測每個變數值,是否有變,並且更新內容,今天要一個一個了解 Vue 的生命週期,讓大家有更多認識。 Vue 的生命週期
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
本篇參與的主題活動
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
必需先建立「台灣共和國」有「國家主權」,才夠格談「民主」制度。民主、自由與國家主權是一體之兩面,需要有「國家主權」作為後盾,才能擁有民主、自由。香港過去再如何建立民主、追求自由,因為不是國家,結果目前被北京政府獨裁統治。
不斷問著自己 再這樣下去 我會不會討厭那個我期盼的生命
Web3代表了互聯網的下一個演變階段,強調了「隱中心化」、安全、隱私和可持續性的原則。在這一框架下,「隱中心化」醫療平台和相關生態系統已經開始嶄露頭角,旨在改革和優化醫療保健行業。
Thumbnail
前言 該如何自架 docker registry 呢? docker registry 可以幫助我們做什麼事情呢? docker registry 是可以將我們打包好的 docker image,放置到 docker registry 上面,在我們開始要佈署服務時,從 docker registr
Thumbnail
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
Thumbnail
我還想補充一下,那就是──如果您對生活充滿期待,自然能夠把日子過成想要的樣子。用樂觀、積極的態度擁抱每一天,學習善用時間和貢獻所長,將可以幫助自己過得更快樂、開心!想想我們的「防疫五月天」、辛苦的醫護人員,以及所有在工作崗位上辛勤努力的小人物(好比那位熱心助人的電腦工程師)⋯⋯
忠誠是目標,但卻是一個緩慢的過程。如果您己經以正確的方式建立事業,您的觀眾將會到來。因為當您推出它,他們已經等待在那裡。 在平台如何建立觀眾?只有三個字詞:內容、內容、內容 建立觀眾可能聽起來很難,因為對您而言它可能很新奇。您目前沒有建立過事業,而且從未建立過觀眾,所以,可能感覺添加了新項目。但幸運
Thumbnail
  曾經有段時間在網路上寫了好多的部落格,有各種模式,從手藝網拍→詩句→心情→小說→日記....但這段歷程的經驗當中,寫作的內容還是受限於他人的感受,如今想寫自己心裡真實的一面,並不希望受限於人的觀點與環境,所以才設立了一個非生活圈的一個地點,或許這樣的出發點會讓自己的寫作魂更被激發出來,而寫作的動
Thumbnail
知名脫口秀網路節目「博恩夜夜秀」的主持人曾博恩最近又惹出風波,這一次他的「美式幽默」動到為爭取台灣獨立和言論自由而革命殉道的鄭南榕身上;這是他繼先前嘲笑喜憨兒販賣愛心餅乾,諷刺總統蔡英文為財團口交、醜化蘭嶼人有免費的電之後,再一次引起巨大爭議的低級笑話。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
必需先建立「台灣共和國」有「國家主權」,才夠格談「民主」制度。民主、自由與國家主權是一體之兩面,需要有「國家主權」作為後盾,才能擁有民主、自由。香港過去再如何建立民主、追求自由,因為不是國家,結果目前被北京政府獨裁統治。
不斷問著自己 再這樣下去 我會不會討厭那個我期盼的生命
Web3代表了互聯網的下一個演變階段,強調了「隱中心化」、安全、隱私和可持續性的原則。在這一框架下,「隱中心化」醫療平台和相關生態系統已經開始嶄露頭角,旨在改革和優化醫療保健行業。
Thumbnail
前言 該如何自架 docker registry 呢? docker registry 可以幫助我們做什麼事情呢? docker registry 是可以將我們打包好的 docker image,放置到 docker registry 上面,在我們開始要佈署服務時,從 docker registr
Thumbnail
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
Thumbnail
我還想補充一下,那就是──如果您對生活充滿期待,自然能夠把日子過成想要的樣子。用樂觀、積極的態度擁抱每一天,學習善用時間和貢獻所長,將可以幫助自己過得更快樂、開心!想想我們的「防疫五月天」、辛苦的醫護人員,以及所有在工作崗位上辛勤努力的小人物(好比那位熱心助人的電腦工程師)⋯⋯
忠誠是目標,但卻是一個緩慢的過程。如果您己經以正確的方式建立事業,您的觀眾將會到來。因為當您推出它,他們已經等待在那裡。 在平台如何建立觀眾?只有三個字詞:內容、內容、內容 建立觀眾可能聽起來很難,因為對您而言它可能很新奇。您目前沒有建立過事業,而且從未建立過觀眾,所以,可能感覺添加了新項目。但幸運
Thumbnail
  曾經有段時間在網路上寫了好多的部落格,有各種模式,從手藝網拍→詩句→心情→小說→日記....但這段歷程的經驗當中,寫作的內容還是受限於他人的感受,如今想寫自己心裡真實的一面,並不希望受限於人的觀點與環境,所以才設立了一個非生活圈的一個地點,或許這樣的出發點會讓自己的寫作魂更被激發出來,而寫作的動
Thumbnail
知名脫口秀網路節目「博恩夜夜秀」的主持人曾博恩最近又惹出風波,這一次他的「美式幽默」動到為爭取台灣獨立和言論自由而革命殉道的鄭南榕身上;這是他繼先前嘲笑喜憨兒販賣愛心餅乾,諷刺總統蔡英文為財團口交、醜化蘭嶼人有免費的電之後,再一次引起巨大爭議的低級笑話。