建立私有 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會員
49Content count
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 設定意義叫做,檔案路徑
本篇參與的主題策展
ReMarkable推出搭載客製化的Gallery 3面板Color Canvas 3.0的全新產品ReMarkable Paper Pro。此機具備229dpi解析度及20000色全彩效果,為電子紙市場注入新活力。此外,此機竟然放棄Wacom改用主動式手寫筆,此創新變革消費者是否買單?
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
ReMarkable推出搭載客製化的Gallery 3面板Color Canvas 3.0的全新產品ReMarkable Paper Pro。此機具備229dpi解析度及20000色全彩效果,為電子紙市場注入新活力。此外,此機竟然放棄Wacom改用主動式手寫筆,此創新變革消費者是否買單?
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
Thumbnail
我還想補充一下,那就是──如果您對生活充滿期待,自然能夠把日子過成想要的樣子。用樂觀、積極的態度擁抱每一天,學習善用時間和貢獻所長,將可以幫助自己過得更快樂、開心!想想我們的「防疫五月天」、辛苦的醫護人員,以及所有在工作崗位上辛勤努力的小人物(好比那位熱心助人的電腦工程師)⋯⋯
忠誠是目標,但卻是一個緩慢的過程。如果您己經以正確的方式建立事業,您的觀眾將會到來。因為當您推出它,他們已經等待在那裡。 在平台如何建立觀眾?只有三個字詞:內容、內容、內容 建立觀眾可能聽起來很難,因為對您而言它可能很新奇。您目前沒有建立過事業,而且從未建立過觀眾,所以,可能感覺添加了新項目。但幸運
Thumbnail
  曾經有段時間在網路上寫了好多的部落格,有各種模式,從手藝網拍→詩句→心情→小說→日記....但這段歷程的經驗當中,寫作的內容還是受限於他人的感受,如今想寫自己心裡真實的一面,並不希望受限於人的觀點與環境,所以才設立了一個非生活圈的一個地點,或許這樣的出發點會讓自己的寫作魂更被激發出來,而寫作的動
Thumbnail
知名脫口秀網路節目「博恩夜夜秀」的主持人曾博恩最近又惹出風波,這一次他的「美式幽默」動到為爭取台灣獨立和言論自由而革命殉道的鄭南榕身上;這是他繼先前嘲笑喜憨兒販賣愛心餅乾,諷刺總統蔡英文為財團口交、醜化蘭嶼人有免費的電之後,再一次引起巨大爭議的低級笑話。
【重要公告】 感謝教官提醒,在此修正自己的貼文基本原則...... 首先,先講一下可不可以談股票這件事情...... 早期法令是不行,可是搞得只剩下投顧可以講,大家也知道電視上丟筆的老師、第四台講的有夠誇張,他們亂七八糟的可以講,正常的達人不能講,......
Thumbnail
這個世界上有些事情就是比較容易理解。尤其當你所做的投資是很容易理解時,你可以更輕鬆地應對並採取正確的行動。
Thumbnail
2013年的時候,我只是一個在樂多網誌上,寫K-indie來逃避論文壓力的研究生。 後來人在多倫多working holiday的Ms.K加我臉友,聊著聊著,有天她臨時起意就說要來開粉專,我只貢獻了粉專名稱,糊里糊塗就成為管理員。於是我們隔著12小時的時差共同經營這個粉絲頁。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
本篇大綱:本篇要解決的問題。用 Docker 安裝 Verdaccio。上傳 package。使用 package。刪除 package。修改 config.yml。改變 CSS。
Thumbnail
我還想補充一下,那就是──如果您對生活充滿期待,自然能夠把日子過成想要的樣子。用樂觀、積極的態度擁抱每一天,學習善用時間和貢獻所長,將可以幫助自己過得更快樂、開心!想想我們的「防疫五月天」、辛苦的醫護人員,以及所有在工作崗位上辛勤努力的小人物(好比那位熱心助人的電腦工程師)⋯⋯
忠誠是目標,但卻是一個緩慢的過程。如果您己經以正確的方式建立事業,您的觀眾將會到來。因為當您推出它,他們已經等待在那裡。 在平台如何建立觀眾?只有三個字詞:內容、內容、內容 建立觀眾可能聽起來很難,因為對您而言它可能很新奇。您目前沒有建立過事業,而且從未建立過觀眾,所以,可能感覺添加了新項目。但幸運
Thumbnail
  曾經有段時間在網路上寫了好多的部落格,有各種模式,從手藝網拍→詩句→心情→小說→日記....但這段歷程的經驗當中,寫作的內容還是受限於他人的感受,如今想寫自己心裡真實的一面,並不希望受限於人的觀點與環境,所以才設立了一個非生活圈的一個地點,或許這樣的出發點會讓自己的寫作魂更被激發出來,而寫作的動
Thumbnail
知名脫口秀網路節目「博恩夜夜秀」的主持人曾博恩最近又惹出風波,這一次他的「美式幽默」動到為爭取台灣獨立和言論自由而革命殉道的鄭南榕身上;這是他繼先前嘲笑喜憨兒販賣愛心餅乾,諷刺總統蔡英文為財團口交、醜化蘭嶼人有免費的電之後,再一次引起巨大爭議的低級笑話。
【重要公告】 感謝教官提醒,在此修正自己的貼文基本原則...... 首先,先講一下可不可以談股票這件事情...... 早期法令是不行,可是搞得只剩下投顧可以講,大家也知道電視上丟筆的老師、第四台講的有夠誇張,他們亂七八糟的可以講,正常的達人不能講,......
Thumbnail
這個世界上有些事情就是比較容易理解。尤其當你所做的投資是很容易理解時,你可以更輕鬆地應對並採取正確的行動。
Thumbnail
2013年的時候,我只是一個在樂多網誌上,寫K-indie來逃避論文壓力的研究生。 後來人在多倫多working holiday的Ms.K加我臉友,聊著聊著,有天她臨時起意就說要來開粉專,我只貢獻了粉專名稱,糊里糊塗就成為管理員。於是我們隔著12小時的時差共同經營這個粉絲頁。