Docker上傳鏡像至私有倉庫的方法示例
鏡像可以很方便直接 push 到 docker 的公共倉庫,就好像 github 一樣,但是我們在開發(fā)中很多時候都不想公開鏡像文件,這時就需要搭建 docker 的私有倉庫,就好像 gitlab 一樣。
在 上一篇 構(gòu)建出鏡像后,我們可以部署一個私有鏡像倉庫用來存放我們的鏡像。
啟動私有 Registry
啟動一個私有倉庫也非常簡單,在服務(wù)器上執(zhí)行命令
即后臺啟動 registry 鏡像構(gòu)建出來的容器,并命名為 docker-registry
,端口號映射為 5000
到 5000
。
--restart=always
代表當(dāng)容器因為某些原因停止時,不管退出碼是什么都自動重啟。除了 always
還有 on-failure
代表只有退出碼不為 0 時才重啟,并且接受重啟次數(shù)參數(shù):--restart=on-failture:5
-v
指定將宿主機(jī)的 /root/docker/registry/
目錄掛載到容器的 /var/lib/registry/
目錄。這樣我們不用進(jìn)入容器,在宿主機(jī)上就能訪問到容器內(nèi)我們感興趣的目錄了。
為什么是/var/lib/registry/
目錄?
倉庫默認(rèn)存放鏡像等信息在容器的/var/lib/registry/docker
目錄下,可以進(jìn)入該目錄查看已上傳鏡像信息。
執(zhí)行 run
命令成功后使用 docker ps
能看到 registry 服務(wù)已經(jīng)啟動:
上傳鏡像
要上傳鏡像到私有倉庫,需要在鏡像的 tag 上加入倉庫地址:
docker tag express-app 111.111.111.111:5000/sunhengzhe/express-app:v1
為了不與其他鏡像沖突,可以加入命名空間如 sunhengzhe
,另外最好給鏡像打上 tag 如 v1
。
注意倉庫地址沒有加協(xié)議部分,docker 默認(rèn)的安全策略需要倉庫是支持 https
的,如果服務(wù)器只能使用 http 傳輸,那么直接上傳會失敗,需要在 docker 客戶端的配置文件中進(jìn)行聲明。
mac 配置
更改完需要 Apply & Restart
centos 系統(tǒng)
在 /etc/docker/daemon.json
文件中寫入:
{ "registry-mirror": [ "https://registry.docker-cn.com" ], "insecure-registries": [ "[私有倉庫 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ù)器上使用 logs
命令查看日志:
docker logs -f docker-registry
-f
代表持續(xù)輸出文件內(nèi)容。
如果出現(xiàn) filesystem: mkdir /var/lib/registry/docker: permission denied
,可能是一個 selinux 問題,需要在服務(wù)器上對掛載目錄進(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
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker部署mysql和nginx服務(wù)的示例詳解
這篇文章主要為大家詳細(xì)介紹了docker部署mysql和nginx服務(wù)的相關(guān)知識,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04淺談Docker-compose中的depends_on順序的問題解決
本文主要介紹了淺談Docker-compose中的depends_on順序的問題解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11docker+daocloud實(shí)現(xiàn)前端項目自動構(gòu)建部署
這篇文章主要介紹了docker+daocloud實(shí)現(xiàn)前端項目自動構(gòu)建部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用
這篇文章主要為大家介紹了Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08手把手教你docker部署(使用docker-compose)教程
使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01生產(chǎn)環(huán)境中安全運(yùn)行Docker容器
本文是一篇譯文,給大家詳細(xì)介紹如何在生產(chǎn)環(huán)境中安全運(yùn)行Docker容器,有需要的小伙伴可以參考下2017-01-01Docker安裝阿里云服務(wù)器和在虛擬機(jī)安裝遇到的坑(問題小結(jié))
這篇文章主要介紹了Docker安裝阿里云服務(wù)器和在虛擬機(jī)安裝遇到的坑,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程
這篇文章主要給大家介紹了使用Docker快速搭建Oracle開發(fā)環(huán)境的方法教程,文中給出了詳細(xì)的解決方法,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06