Docker容器實戰(zhàn)之鏡像倉庫
一. 鏡像倉庫
Registry是Docker公司的一項創(chuàng)新,它提供了存放鏡像的倉庫服務(wù)。在構(gòu)建好鏡像后,我們通常會將鏡像上傳到Registry服務(wù)器上進(jìn)行保存。這樣可以保證不會因本機(jī)故障而導(dǎo)致鏡像丟失,同時,其他機(jī)器也能很方便地通過網(wǎng)絡(luò)方式下載。
Docker Hub即為Docker官方的Registry服務(wù)器,它的訪問地址為 https://hub.docker.com 。我們總是習(xí)慣將Registry稱為倉庫,但事實上兩者并不完全等同。它們之間的關(guān)系如下圖所示,在Registry中可以有多個倉庫,每個倉庫存儲同名的鏡像,而鏡像之間通過Tag進(jìn)行版本區(qū)分。
Docker客戶端默認(rèn)使用Docker Hub拉取鏡像,在Docker Hub上有著數(shù)量眾多的倉庫,其中就有Docker官方提供的公共倉庫。在官方倉庫中存儲了海量的應(yīng)用鏡像,這些鏡像都是經(jīng)過官方的篩選和審查,具有較高的安全性,應(yīng)該作為生產(chǎn)使用的首選項。Docker Hub具有與GitHub相同的概念,Stars代表著鏡像受歡迎程度,通常優(yōu)先下載Stars數(shù)量多的鏡像。
除了使用官方倉庫,我們也可以在Docker Hub上面創(chuàng)建自己的個人倉庫,用于存放定制化的鏡像。
操作方法如下:
1. 賬號注冊
新用戶需要使用自己的郵箱地址注冊賬號,點(diǎn)擊Register按鍵后開始注冊。
2. 創(chuàng)建倉庫
使用賬號登錄系統(tǒng)后,我們就可以來創(chuàng)建自己的倉庫。倉庫分為兩類,一類為公共倉庫,一類為私有倉庫 ,公共倉庫屬于開放性倉庫,用戶不需要任何驗證即可下載鏡像,而私有倉庫需要具有相關(guān)權(quán)限的賬號才能下載。免費(fèi)用戶目前在Docker Hub只能創(chuàng)建一個私有倉庫,公共倉庫則沒有限制。
選擇“Repositories“菜單,然后點(diǎn)擊”Create Repository”創(chuàng)建用戶,此處創(chuàng)建一個公共倉庫,名稱為myapp,前面部分為我們的在Dcoker Hub的專屬名稱空間。
點(diǎn)擊“Create” 創(chuàng)建完成后,我們可以來試著上傳鏡像了。
二. 上傳鏡像
在前面構(gòu)建鏡像時,我們配置了鏡像名稱,如:myapp:1.0。如果只在本機(jī)使用的話,對于名稱格式并沒有特別要求。但如果要將鏡像上傳或從倉庫下載的話,那么必須使用如下的名稱格式 :
Registry Address/Namespace/Repository:Tag
- Registry Address:指向Registry服務(wù)器的地址 ,當(dāng)鏡像未設(shè)置該項時,則默認(rèn)使用Docker Hub的地址。
- Namespace:Registry中唯一的空間地址,可以用于區(qū)分不同用戶或項目。默認(rèn)使用Docker官方的空間地址。
- Repository:倉庫名稱,同一個應(yīng)用的鏡像倉庫名相同,通過不同的tag來標(biāo)記。
- Tag:用于標(biāo)記不同的鏡像版本。
現(xiàn)在,我們按照上面的格式來修改前面創(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,則需要在前面加上對應(yīng)的地址。
docker tag命令并不會對原有鏡像做修改,只會將新的tag 映射到該鏡像。我們可以看到,新鏡像的IMAGE ID與原鏡像的相同,證明都是屬于同一個鏡像文件。
$ 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注冊的賬號信息,完成驗證。
$ 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
然后,我們通過docker [image] push 命令上傳鏡像到倉庫,如下:
$ 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容器實戰(zhàn)之鏡像倉庫的文章就介紹到這了,更多相關(guān)Docker 鏡像倉庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用 kind 和 Docker 啟動本地的 Kubernetes環(huán)境
這篇文章主要介紹了使用 kind 和 Docker 啟動本地的 Kubernetes環(huán)境,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05使用docker compose一鍵部署多個服務(wù)的方法
docker compose 是 docker 官方的開源項目,用來實現(xiàn)對 docker 容器集群的快速編排,通過docker-compose可以一鍵創(chuàng)建和刪除多個容器 ,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-01-01Dockerfile指令與基本結(jié)構(gòu)的講解
今天小編就為大家分享一篇關(guān)于Dockerfile指令與基本結(jié)構(gòu)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Dockerfile 部署java web的環(huán)境詳解
這篇文章主要介紹了Dockerfile 構(gòu)建java web 環(huán)境詳解的相關(guān)資料,這里對Dockerfile 進(jìn)行基本介紹,并說明如何構(gòu)建java web環(huán)境進(jìn)行詳解,需要的朋友可以參考下2016-12-12docker swarm如何在指定的node上運(yùn)行指定的容器
這篇文章主要介紹了docker swarm如何在指定的node上運(yùn)行指定的容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Docker+nacos+seata1.3.0安裝與使用配置教程
這篇文章主要介紹了Docker+nacos+seata1.3.0安裝與使用配置教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07