Docker上傳鏡像至私有倉(cāng)庫(kù)的方法示例
鏡像可以很方便直接 push 到 docker 的公共倉(cāng)庫(kù),就好像 github 一樣,但是我們?cè)陂_發(fā)中很多時(shí)候都不想公開鏡像文件,這時(shí)就需要搭建 docker 的私有倉(cāng)庫(kù),就好像 gitlab 一樣。
在 上一篇 構(gòu)建出鏡像后,我們可以部署一個(gè)私有鏡像倉(cāng)庫(kù)用來(lái)存放我們的鏡像。
啟動(dòng)私有 Registry
啟動(dòng)一個(gè)私有倉(cāng)庫(kù)也非常簡(jiǎn)單,在服務(wù)器上執(zhí)行命令
即后臺(tái)啟動(dòng) registry 鏡像構(gòu)建出來(lái)的容器,并命名為 docker-registry,端口號(hào)映射為 5000 到 5000。
--restart=always 代表當(dāng)容器因?yàn)槟承┰蛲V箷r(shí),不管退出碼是什么都自動(dòng)重啟。除了 always 還有 on-failure 代表只有退出碼不為 0 時(shí)才重啟,并且接受重啟次數(shù)參數(shù):--restart=on-failture:5
-v 指定將宿主機(jī)的 /root/docker/registry/ 目錄掛載到容器的 /var/lib/registry/ 目錄。這樣我們不用進(jìn)入容器,在宿主機(jī)上就能訪問(wèn)到容器內(nèi)我們感興趣的目錄了。
為什么是/var/lib/registry/目錄?
倉(cāng)庫(kù)默認(rèn)存放鏡像等信息在容器的/var/lib/registry/docker目錄下,可以進(jìn)入該目錄查看已上傳鏡像信息。

執(zhí)行 run 命令成功后使用 docker ps 能看到 registry 服務(wù)已經(jīng)啟動(dòng):

上傳鏡像
要上傳鏡像到私有倉(cāng)庫(kù),需要在鏡像的 tag 上加入倉(cāng)庫(kù)地址:
docker tag express-app 111.111.111.111:5000/sunhengzhe/express-app:v1
為了不與其他鏡像沖突,可以加入命名空間如 sunhengzhe,另外最好給鏡像打上 tag 如 v1。
注意倉(cāng)庫(kù)地址沒(méi)有加協(xié)議部分,docker 默認(rèn)的安全策略需要倉(cāng)庫(kù)是支持 https 的,如果服務(wù)器只能使用 http 傳輸,那么直接上傳會(huì)失敗,需要在 docker 客戶端的配置文件中進(jìn)行聲明。
mac 配置


更改完需要 Apply & Restart
centos 系統(tǒng)
在 /etc/docker/daemon.json 文件中寫入:
{
"registry-mirror": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"[私有倉(cāng)庫(kù) ip:port]"
]
}
然后重啟 docker
systemctl restart docker
推送鏡像
打完 tag 后使用 push 命令推送即可:
docker push 111.111.111.111:5000/sunhengzhe/express-app:v1

推送失敗
如果出現(xiàn) Retrying in 5 seconds 然后上傳失敗的問(wèn)題。可以首先在服務(wù)器上使用 logs 命令查看日志:
docker logs -f docker-registry
-f 代表持續(xù)輸出文件內(nèi)容。
如果出現(xiàn) filesystem: mkdir /var/lib/registry/docker: permission denied,可能是一個(gè) selinux 問(wèn)題,需要在服務(wù)器上對(duì)掛載目錄進(jìn)行處理:
chcon -Rt svirt_sandbox_file_t /root/docker/registry/
此示例中即 /root/docker/registry/。

拉取鏡像
使用 pull 命令即可
docker pull 111.111.111.111:5000/sunhengzhe/express-app:v1
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Docker創(chuàng)建自己的鏡像與上傳流程詳解
- docker-maven-plugin打包鏡像并上傳到私有倉(cāng)庫(kù)
- Docker如何制作自己鏡像并上傳dockerhub
- 利用nexus作為私庫(kù)進(jìn)行代理docker,進(jìn)行上傳和下載鏡像操作
- springboot docker jenkins 自動(dòng)化部署并上傳鏡像的步驟詳解
- docker鏡像倉(cāng)庫(kù)hub.docker.com無(wú)法訪問(wèn)的解決方法
- DockerHub 鏡像倉(cāng)庫(kù)的使用詳解
- docker 上傳鏡像到hub倉(cāng)庫(kù)的操作步驟
相關(guān)文章
Docker創(chuàng)建MongoDB容器并添加root密碼驗(yàn)證與更多用戶詳細(xì)步驟
MongoDB是一個(gè)著名的面向文檔的數(shù)據(jù)庫(kù),被許多現(xiàn)代Web應(yīng)用程序使用,下面這篇文章主要給大家介紹了關(guān)于Docker創(chuàng)建MongoDB容器并添加root密碼驗(yàn)證與更多用戶的相關(guān)資料,需要的朋友可以參考下2023-01-01
Docker部署Ragflow(完美解決502 bad gateway)
本文主要介紹了Docker部署Ragflow,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
關(guān)于docker部署fastapi項(xiàng)目以及日志掛載方式
這篇文章主要介紹了關(guān)于docker部署fastapi項(xiàng)目以及日志掛載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Docker動(dòng)態(tài)添加端口不需要重新建立鏡像的方法
Docker容器在運(yùn)行期間有時(shí)可能會(huì)需要修改或者添加暴露的端口,但是有時(shí)候運(yùn)行的容器又不想再另外建立一個(gè)新的鏡像。接下來(lái)通過(guò)本文給大家分享Docker動(dòng)態(tài)添加端口不需要重新建立鏡像的方法,感興趣的朋友一起看看吧2019-07-07
Docker安裝RabbitMQ AMQP協(xié)議及重要角色
這篇文章主要為大家介紹了Docker安裝RabbitMQ AMQP協(xié)議和主要角色詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
解決Docker daemon啟動(dòng)問(wèn)題
這篇文章主要介紹了解決Docker daemon啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

