Docker容器實(shí)戰(zhàn)之鏡像倉(cāng)庫(kù)
一. 鏡像倉(cāng)庫(kù)
Registry是Docker公司的一項(xiàng)創(chuàng)新,它提供了存放鏡像的倉(cāng)庫(kù)服務(wù)。在構(gòu)建好鏡像后,我們通常會(huì)將鏡像上傳到Registry服務(wù)器上進(jìn)行保存。這樣可以保證不會(huì)因本機(jī)故障而導(dǎo)致鏡像丟失,同時(shí),其他機(jī)器也能很方便地通過(guò)網(wǎng)絡(luò)方式下載。
Docker Hub即為Docker官方的Registry服務(wù)器,它的訪問(wèn)地址為 https://hub.docker.com 。我們總是習(xí)慣將Registry稱為倉(cāng)庫(kù),但事實(shí)上兩者并不完全等同。它們之間的關(guān)系如下圖所示,在Registry中可以有多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)存儲(chǔ)同名的鏡像,而鏡像之間通過(guò)Tag進(jìn)行版本區(qū)分。
Docker客戶端默認(rèn)使用Docker Hub拉取鏡像,在Docker Hub上有著數(shù)量眾多的倉(cāng)庫(kù),其中就有Docker官方提供的公共倉(cāng)庫(kù)。在官方倉(cāng)庫(kù)中存儲(chǔ)了海量的應(yīng)用鏡像,這些鏡像都是經(jīng)過(guò)官方的篩選和審查,具有較高的安全性,應(yīng)該作為生產(chǎn)使用的首選項(xiàng)。Docker Hub具有與GitHub相同的概念,Stars代表著鏡像受歡迎程度,通常優(yōu)先下載Stars數(shù)量多的鏡像。
除了使用官方倉(cāng)庫(kù),我們也可以在Docker Hub上面創(chuàng)建自己的個(gè)人倉(cāng)庫(kù),用于存放定制化的鏡像。
操作方法如下:
1. 賬號(hào)注冊(cè)
新用戶需要使用自己的郵箱地址注冊(cè)賬號(hào),點(diǎn)擊Register按鍵后開(kāi)始注冊(cè)。
2. 創(chuàng)建倉(cāng)庫(kù)
使用賬號(hào)登錄系統(tǒng)后,我們就可以來(lái)創(chuàng)建自己的倉(cāng)庫(kù)。倉(cāng)庫(kù)分為兩類,一類為公共倉(cāng)庫(kù),一類為私有倉(cāng)庫(kù) ,公共倉(cāng)庫(kù)屬于開(kāi)放性倉(cāng)庫(kù),用戶不需要任何驗(yàn)證即可下載鏡像,而私有倉(cāng)庫(kù)需要具有相關(guān)權(quán)限的賬號(hào)才能下載。免費(fèi)用戶目前在Docker Hub只能創(chuàng)建一個(gè)私有倉(cāng)庫(kù),公共倉(cāng)庫(kù)則沒(méi)有限制。
選擇“Repositories“菜單,然后點(diǎn)擊”Create Repository”創(chuàng)建用戶,此處創(chuàng)建一個(gè)公共倉(cāng)庫(kù),名稱為myapp,前面部分為我們的在Dcoker Hub的專屬名稱空間。
點(diǎn)擊“Create” 創(chuàng)建完成后,我們可以來(lái)試著上傳鏡像了。
二. 上傳鏡像
在前面構(gòu)建鏡像時(shí),我們配置了鏡像名稱,如:myapp:1.0。如果只在本機(jī)使用的話,對(duì)于名稱格式并沒(méi)有特別要求。但如果要將鏡像上傳或從倉(cāng)庫(kù)下載的話,那么必須使用如下的名稱格式 :
Registry Address/Namespace/Repository:Tag
- Registry Address:指向Registry服務(wù)器的地址 ,當(dāng)鏡像未設(shè)置該項(xiàng)時(shí),則默認(rèn)使用Docker Hub的地址。
- Namespace:Registry中唯一的空間地址,可以用于區(qū)分不同用戶或項(xiàng)目。默認(rèn)使用Docker官方的空間地址。
- Repository:倉(cāng)庫(kù)名稱,同一個(gè)應(yīng)用的鏡像倉(cāng)庫(kù)名相同,通過(guò)不同的tag來(lái)標(biāo)記。
- Tag:用于標(biāo)記不同的鏡像版本。
現(xiàn)在,我們按照上面的格式來(lái)修改前面創(chuàng)建的鏡像myapp:1.0,命令格式為:docker [image] tag +<Source_image:Tag> + <Target_image:Tag>。
$ docker tag myapp:1.0 alex990/myapp:1.0
注釋:由于Docker Hub地址為默認(rèn),故此處不需要增加,如果是其他第三方Registry,則需要在前面加上對(duì)應(yīng)的地址。
docker tag命令并不會(huì)對(duì)原有鏡像做修改,只會(huì)將新的tag 映射到該鏡像。我們可以看到,新鏡像的IMAGE ID與原鏡像的相同,證明都是屬于同一個(gè)鏡像文件。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE alex990/myapp 1.0 6c1160b01988 20 hours ago 43.2MB myapp 1.0 6c1160b01988 20 hours ago 43.2MB
運(yùn)行docker login,并按提示輸入Docker Hub注冊(cè)的賬號(hào)信息,完成驗(yàn)證。
$ docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: alex990 Password: Login Succeeded
然后,我們通過(guò)docker [image] push 命令上傳鏡像到倉(cāng)庫(kù),如下:
$ docker push alex990/myapp:1.0 The push refers to repository [docker.io/alex990/myapp] 7a965a3a67a7: Mounted from linsr2018/myapp f604d2d04ecc: Mounted from linsr2018/myapp 9b999b9e5af8: Mounted from linsr2018/myapp 675233026df0: Mounted from linsr2018/myapp ddb2d7cdfff3: Mounted from linsr2018/myapp 1965cfbef2ab: Mounted from linsr2018/myapp 8d3ac3489996: Mounted from linsr2018/myapp 1.0: digest: sha256:04f75f3422e55affbdf7f14f0a2e5784d09d7774d9f7f695b412b065cdb484c3 size: 1782
上傳完成后,登錄Docker Hub可看到鏡像已存在?,F(xiàn)在,我們可以到其他機(jī)器上進(jìn)行下載使用了。
到此這篇關(guān)于Docker容器實(shí)戰(zhàn)之鏡像倉(cāng)庫(kù)的文章就介紹到這了,更多相關(guān)Docker 鏡像倉(cāng)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 kind 和 Docker 啟動(dòng)本地的 Kubernetes環(huán)境
這篇文章主要介紹了使用 kind 和 Docker 啟動(dòng)本地的 Kubernetes環(huán)境,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Docker實(shí)踐之python應(yīng)用容器化
這篇文章主要介紹了Docker實(shí)踐之python應(yīng)用容器化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06使用docker compose一鍵部署多個(gè)服務(wù)的方法
docker compose 是 docker 官方的開(kāi)源項(xiàng)目,用來(lái)實(shí)現(xiàn)對(duì) docker 容器集群的快速編排,通過(guò)docker-compose可以一鍵創(chuàng)建和刪除多個(gè)容器 ,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-01-01Dockerfile指令與基本結(jié)構(gòu)的講解
今天小編就為大家分享一篇關(guān)于Dockerfile指令與基本結(jié)構(gòu)的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Dockerfile 部署java web的環(huán)境詳解
這篇文章主要介紹了Dockerfile 構(gòu)建java web 環(huán)境詳解的相關(guān)資料,這里對(duì)Dockerfile 進(jìn)行基本介紹,并說(shuō)明如何構(gòu)建java web環(huán)境進(jìn)行詳解,需要的朋友可以參考下2016-12-12docker-compose安裝jenkins全過(guò)程
本文詳細(xì)介紹了如何在服務(wù)器上通過(guò)Docker安裝和配置Jenkins,包括環(huán)境準(zhǔn)備、安裝JDK和Maven、配置環(huán)境變量、修改Maven設(shè)置、配置docker-compose.yml文件以及如何解決訪問(wèn)403錯(cuò)誤等步驟,此外,還涵蓋了如何新建流水線任務(wù)并配置pipeline腳本2024-09-09docker swarm如何在指定的node上運(yùn)行指定的容器
這篇文章主要介紹了docker swarm如何在指定的node上運(yùn)行指定的容器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Docker+nacos+seata1.3.0安裝與使用配置教程
這篇文章主要介紹了Docker+nacos+seata1.3.0安裝與使用配置教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07