在docker中,鏡像倉庫的主要作用是存儲(chǔ)和分發(fā)docker鏡像;鏡像倉庫是幾種存放鏡像的地方,鏡像倉庫可以分為遠(yuǎn)程倉庫和本地倉庫兩種,遠(yuǎn)程倉庫可以理解成云倉庫、公有倉庫,是由某個(gè)組織、公司維護(hù)的倉庫,本地倉庫可以理解為私有倉庫,不對(duì)外開放。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker19.03版、Dell G3電腦。
docker鏡像倉庫有什么用
鏡像,可以理解為將應(yīng)用程序和運(yùn)行環(huán)境打包成“應(yīng)用模板”,是容器的上層抽象。容器是鏡像的運(yùn)行實(shí)例,啟動(dòng)時(shí)傳入相應(yīng)的參數(shù),即可運(yùn)行應(yīng)用程序。二者的關(guān)系類似于代碼中的“類和對(duì)象”。
要以容器的方式運(yùn)行應(yīng)用程序,需要先制作鏡像,在鏡像中指定應(yīng)用程序的運(yùn)行環(huán)境、啟動(dòng)方式等信息,然后生成鏡像、上傳到鏡像倉庫中。后續(xù)要運(yùn)行這個(gè)應(yīng)用程序時(shí),就會(huì)從鏡像倉庫中拉取這個(gè)鏡像、然后以容器的方式運(yùn)行。只要操作系統(tǒng)支持容器運(yùn)行,就可以運(yùn)行這個(gè)應(yīng)用程序,屏蔽了環(huán)境差異,使部署運(yùn)行變得簡(jiǎn)潔。
鏡像倉庫可分為2種:
-
遠(yuǎn)程倉庫:可以理解成云倉庫、公有倉庫,是由某個(gè)組織、公司維護(hù)的倉庫,對(duì)互聯(lián)網(wǎng)開放,所有人共享。如官方的倉庫;
-
本地倉庫:可以理解為公司的私有倉庫,不對(duì)外開放。一般情況下只在公司內(nèi)網(wǎng)中使用,用于加快鏡像拉取速度、維護(hù)公司資產(chǎn)。
目前 Docker 官方維護(hù)了一個(gè)公共倉庫Docker Hub ,大部分需求都可以通 過在 Docker Hub 中直接下載鏡像來實(shí)現(xiàn)。如果你覺得拉取 Docker Hub 的鏡像比較慢的話,我們可以配置一個(gè)鏡像加速器,當(dāng)然國內(nèi)大部分云廠 商都提供了相應(yīng)的加速器,簡(jiǎn)單配置即可。
鏡像是docker的基礎(chǔ),我們可以從docker.hub官方共有的倉庫去拉取鏡像,也可以自己去建立自己的私有倉庫
擴(kuò)展知識(shí)
搭建鏡像倉庫
首先,下載Registry鏡像并啟動(dòng)
docker pull registry
然后,運(yùn)行一個(gè)Registry鏡像倉庫的容器實(shí)例
最后,在客戶端查看鏡像倉庫中的所有鏡像
curl http://your-server-ip:5000/v2/_catalog
上傳鏡像
首先,為了讓客戶端服務(wù)器能夠快速地訪問剛剛在服務(wù)端搭建的鏡像倉庫(默認(rèn)情況下是需要配置HTTPS證書的),這里簡(jiǎn)單在客戶端配置一下私有倉庫的可信任設(shè)置讓我們可以通過HTTP直接訪問:
vim /etc/docker/daemon.json
加上下面這一句,這里的“your-server-ip”請(qǐng)換為你的服務(wù)器的外網(wǎng)IP地址:
{ "insecure-registries" : [ "your-server-ip:5000" ] }
PS:如果不設(shè)置可信任源,又沒有配置HTTPS證書,那么會(huì)遇到這個(gè)錯(cuò)誤:error: Get https://ip:port/v1/_ping: http: server gave HTTP response to HTTPS client.
為了使得配置生效,重新啟動(dòng)docker服務(wù):# systemctl restart docker
其次,為要上傳的鏡像打Tag
docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname
最后,開始正式上傳鏡像到服務(wù)端鏡像倉庫 docker push your-registry-server-ip:5000/your-image-name:tagname
下載鏡像
下載鏡像就很簡(jiǎn)單了,使用pull命令即可:
docker pull your-server-ip:5000/your-image-name:tagname
如果想要知道要下載的鏡像都有哪些tag(或版本),可以通過下面這個(gè)api來獲取:
curl http://your-server-ip:5000/v2/your-image-name/tags/list
推薦學(xué)習(xí):《docker視頻教程》