Docker如何搭建私有鏡像倉庫
一、為什么要自己搭建鏡像倉庫
鏡像倉庫(Docker Registry)有公共的和私有的兩種形式:
公共倉庫:例如Docker官方的Docker Hub,國內(nèi)也有一些云服務(wù)商提供類似于Docker Hub的公開服務(wù),比如網(wǎng)易云鏡像服務(wù)、DaoCloud鏡像服務(wù)、阿里云鏡像服務(wù)等。
用戶在本地搭建 私有Docker Registry。
因?yàn)槠髽I(yè)中的鏡像那不都是商業(yè)機(jī)密么,肯定不希望開源,不然還怎么賺錢,所以企業(yè)自己的鏡像最好是采用私有Docker Registry來實(shí)現(xiàn)。
二、搭建私有鏡像倉庫
1.無UI的簡化版鏡像倉庫
Docker官方的Docker Registry是一個(gè)基礎(chǔ)版本的Docker鏡像倉庫,具備倉庫管理的完整功能,但是沒有圖形化界面。
docker run -d \ --restart=always \ --name registry \ -p 5000:5000 \ -v registry-data:/var/lib/registry \ registry
命令中掛載了一個(gè)數(shù)據(jù)卷registry-data到容器內(nèi)的/var/lib/registry 目錄,這是私有鏡像庫存放數(shù)據(jù)的目錄。
訪問http://你的IP地址:5000/v2/_catalog
可以查看當(dāng)前私有鏡像服務(wù)中包含的鏡像
2.有UI的鏡像倉庫
當(dāng)然了,我們平常肯定是使用帶有圖形化界面的咯
Ⅰ.配置Docker信任地址
私服采用的是http協(xié)議,默認(rèn)不被Docker信任,所以需要做一個(gè)配置:
# 打開要修改的文件 vi /etc/docker/daemon.json # 添加內(nèi)容: # 需要將 http://192.168.3.128 替換為你自己的 ip "insecure-registries":["http://192.168.3.128:8080"] # 重加載 systemctl daemon-reload # 重啟docker systemctl restart docker
需要注意的是,別忘了需要寫一個(gè)逗號
拓展:如果遇見錯誤:
Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed docker.service" followed by "systemctl start docker.service" again.
- 進(jìn)入目錄下修改配置文件名稱,路徑:cd /etc/docker
- 查看當(dāng)前目錄的配置文件,輸入:ls
- 把daemon.json配置文件改成daemon.conf即可,命令:mv daemon.json daemon.conf
- 重新啟動服務(wù),命令:sudo service docker restart
- 然后再docker ps, 運(yùn)行ok了
- 等運(yùn)行成功后再改回來,不然推送鏡像時(shí)推送不上去
Ⅱ.創(chuàng)建compose文件部署
Docker官方的Docker Registry因?yàn)閹в袌D形化界面版本的鏡像倉庫不是官方提供的,而是由第三方個(gè)人基于 Docker 官方的 Docker Registry 進(jìn)行開發(fā)的,所以部署時(shí)需要兩個(gè)靜像,我們使用 compose 文件進(jìn)行部署
- 1.創(chuàng)建文件
mkdir /tmp/registry-ui cd /tmp/registry-ui/ touch docker-compose.yml
- 2.在 docker-compose.yml 文件中添加以下內(nèi)容
version: '3.0' services: registry: image: registry volumes: - ./registry-data:/var/lib/registry ui: image: joxit/docker-registry-ui:static ports: - 8080:80 environment: - REGISTRY_TITLE=溫柔哥私有倉庫 - REGISTRY_URL=http://registry:5000 depends_on: - registry
depends_on: - registry 表明 ui 依賴于 registry,所以這樣就會先啟動registry
- 3.啟動
docker-compose up -d
啟動成功
- 4.去瀏覽器訪問:192.168.3.128:8080
三、推送鏡像
1.tag本地鏡像
推送鏡像到私有鏡像服務(wù)必須先tag(就是將本地鏡像重命名一下,他們的鏡像 ID 都是一樣的,本質(zhì)上還是同一個(gè)鏡像)
故我們先重新tag本地鏡像,名稱前綴為私有倉庫的地址:這里我的地址為:192.168.3.128:8080,以 nginx 鏡像為例,將 nginx:latest 鏡像重命名為 192.168.3.128:8080/nginx:1.0
docker tag nginx:latest 192.168.3.128:8080/nginx:1.0
2.推送鏡像
docker push 192.168.3.128:8080/nginx:1.0
可以看到,推送成功了
四、拉取鏡像
1.先把之前的刪除掉
docker rmi 192.168.3.128:8080/nginx:1.0 docker rmi nginx:latest # 如果鏡像正在被容器使用,可以使用 -f 選項(xiàng)進(jìn)行強(qiáng)制刪除
2.拉取鏡像
docker pull 192.168.3.128:8080/nginx:1.0
這里有個(gè)小疑問:
我看老師是把 192.168.3.128:8080/nginx:1.0
和 nginx:latest
兩個(gè)鏡像都刪除了,然后一下拉取兩個(gè)都回來了,但是我這里只回來了這一個(gè)鏡像 192.168.3.128:8080/nginx:1.0
,那么這樣的話,以后 nginx:latest
就不用刪除了!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker中namespace隔離的實(shí)戰(zhàn)
Namespace是Linux內(nèi)核的一個(gè)功能,用于隔離和管理系統(tǒng)資源,如進(jìn)程、網(wǎng)絡(luò)和文件系統(tǒng)等,通過創(chuàng)建隔離的命名空間,系統(tǒng)可以實(shí)現(xiàn)容器化和資源隔離,提高系統(tǒng)的安全性和穩(wěn)定性,這種技術(shù)廣泛應(yīng)用于Docker等容器技術(shù)中,本文就來介紹一下Docker中namespace隔離的實(shí)戰(zhàn)2024-11-11docker-compose安裝db2數(shù)據(jù)庫操作
這篇文章主要介紹了docker-compose安裝db2數(shù)據(jù)庫操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐
本文主要介紹了Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Docker服務(wù)的重啟服務(wù)命令詳解(systemctl restart docker)
這篇文章主要介紹了Docker服務(wù)的重啟服務(wù)命令(systemctl restart docker),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11Docker容器遷移Oracle到MySQL的實(shí)現(xiàn)方法
本文主要介紹了Docker容器遷移Oracle到MySQL的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07通過Docker為本地DeepSeek-r1部署WebUI界面的完整教程
本文詳細(xì)介紹了如何通過Docker安裝并配置OpenWebUI,一個(gè)功能豐富的自托管Web用戶界面,用于與大型語言模型交互,文章步驟包括安裝Docker、配置WSL2、使用dockerrun命令部署OpenWebUI,并提供了詳細(xì)的命令解釋和部署結(jié)果,需要的朋友可以參考下2025-02-02修改Docker鏡像倉庫為阿里云鏡像或163鏡像的實(shí)現(xiàn)
docker本身的倉庫非常慢,但是國內(nèi)有阿里云的鏡像倉庫非常快,本文主要介紹了修改Docker鏡像倉庫為阿里云鏡像或163鏡像的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11