一、為什么要自己搭建鏡像倉庫
??鏡像倉庫(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的簡(jiǎn)化版鏡像倉庫
??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)然了,我們平??隙ㄊ鞘褂脦в袌D形化界面的咯
Ⅰ.配置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è)逗號(hào)
??拓展:如果遇見錯(cuò)誤:
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
- 重新啟動(dòng)服務(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,所以這樣就會(huì)先啟動(dòng)registry
??3.啟動(dòng)
docker-compose up -d
啟動(dòng)成功
??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
文章來源:http://www.zghlxwxcb.cn/news/detail-825358.html
??這里有個(gè)小疑問:我看老師是把
192.168.3.128:8080/nginx:1.0
和nginx:latest
兩個(gè)鏡像都刪除了,然后一下拉取兩個(gè)都回來了,但是我這里只回來了這一個(gè)鏡像192.168.3.128:8080/nginx:1.0
,那么這樣的話,以后nginx:latest
就不用刪除了!文章來源地址http://www.zghlxwxcb.cn/news/detail-825358.html
到了這里,關(guān)于Docker-搭建私有鏡像倉庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!