Docker容器實戰(zhàn)之鏡像倉庫
一. 鏡像倉庫
Registry是Docker公司的一項創(chuàng)新,它提供了存放鏡像的倉庫服務。在構建好鏡像后,我們通常會將鏡像上傳到Registry服務器上進行保存。這樣可以保證不會因本機故障而導致鏡像丟失,同時,其他機器也能很方便地通過網(wǎng)絡方式下載。
Docker Hub即為Docker官方的Registry服務器,它的訪問地址為 https://hub.docker.com 。我們總是習慣將Registry稱為倉庫,但事實上兩者并不完全等同。它們之間的關系如下圖所示,在Registry中可以有多個倉庫,每個倉庫存儲同名的鏡像,而鏡像之間通過Tag進行版本區(qū)分。

Docker客戶端默認使用Docker Hub拉取鏡像,在Docker Hub上有著數(shù)量眾多的倉庫,其中就有Docker官方提供的公共倉庫。在官方倉庫中存儲了海量的應用鏡像,這些鏡像都是經(jīng)過官方的篩選和審查,具有較高的安全性,應該作為生產(chǎn)使用的首選項。Docker Hub具有與GitHub相同的概念,Stars代表著鏡像受歡迎程度,通常優(yōu)先下載Stars數(shù)量多的鏡像。

除了使用官方倉庫,我們也可以在Docker Hub上面創(chuàng)建自己的個人倉庫,用于存放定制化的鏡像。
操作方法如下:
1. 賬號注冊
新用戶需要使用自己的郵箱地址注冊賬號,點擊Register按鍵后開始注冊。

2. 創(chuàng)建倉庫
使用賬號登錄系統(tǒng)后,我們就可以來創(chuàng)建自己的倉庫。倉庫分為兩類,一類為公共倉庫,一類為私有倉庫 ,公共倉庫屬于開放性倉庫,用戶不需要任何驗證即可下載鏡像,而私有倉庫需要具有相關權限的賬號才能下載。免費用戶目前在Docker Hub只能創(chuàng)建一個私有倉庫,公共倉庫則沒有限制。
選擇“Repositories“菜單,然后點擊”Create Repository”創(chuàng)建用戶,此處創(chuàng)建一個公共倉庫,名稱為myapp,前面部分為我們的在Dcoker Hub的專屬名稱空間。

點擊“Create” 創(chuàng)建完成后,我們可以來試著上傳鏡像了。

二. 上傳鏡像
在前面構建鏡像時,我們配置了鏡像名稱,如:myapp:1.0。如果只在本機使用的話,對于名稱格式并沒有特別要求。但如果要將鏡像上傳或從倉庫下載的話,那么必須使用如下的名稱格式 :
Registry Address/Namespace/Repository:Tag
- Registry Address:指向Registry服務器的地址 ,當鏡像未設置該項時,則默認使用Docker Hub的地址。
- Namespace:Registry中唯一的空間地址,可以用于區(qū)分不同用戶或項目。默認使用Docker官方的空間地址。
- Repository:倉庫名稱,同一個應用的鏡像倉庫名相同,通過不同的tag來標記。
- Tag:用于標記不同的鏡像版本。
現(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地址為默認,故此處不需要增加,如果是其他第三方Registry,則需要在前面加上對應的地址。
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
運行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)在,我們可以到其他機器上進行下載使用了。

到此這篇關于Docker容器實戰(zhàn)之鏡像倉庫的文章就介紹到這了,更多相關Docker 鏡像倉庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker start啟動容器后仍然exit狀態(tài)的解決
這篇文章主要介紹了docker start啟動容器后仍然exit狀態(tài)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
詳解Docker Compose 中可用的環(huán)境變量問題
Compose 的多個部分在某種情況下處理環(huán)境變量。這篇文章主要介紹了Docker Compose 中可用的環(huán)境變量問題,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-12-12
Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法
這篇文章主要介紹了Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法的相關資料,需要的朋友可以參考下2016-11-11
Docker安裝配置Oracle詳細步驟記錄(以作持久化處理)
docker是一個用Go語言實現(xiàn)的開源項目,可以讓我們方便的創(chuàng)建和使用容器,下面這篇文章主要給大家介紹了關于Docker安裝配置Oracle詳細步驟的相關資料,需要的朋友可以參考下2024-03-03
Docker swarm如何通過docker-compose部署應用
這篇文章主要介紹了Docker swarm如何通過docker-compose部署應用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
Jenkins+Docker持續(xù)集成的實現(xiàn)
Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。本文介紹了Jenkins Docker持續(xù)集成,分享給大家2021-05-05

