本篇文章為大家展示了如何進(jìn)行Docker 鏡像命名的實(shí)踐 ,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),武平網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:武平等地區(qū)。武平做網(wǎng)站價(jià)格咨詢:18980820575
我們已經(jīng)學(xué)會(huì)構(gòu)建自己的鏡像了。接下來(lái)的問題是如何在多個(gè) Docker Host 上使用鏡像。
這里有幾種可用的方法:
用相同的 Dockerfile 在其他 host 構(gòu)建鏡像。
將鏡像上傳到公共 Registry(比如 Docker Hub),Host 直接下載使用。
搭建私有的 Registry 供本地 Host 使用。
第一種方法沒什么特別的,前面已經(jīng)討論很多了。我們將討論如何使用公共和私有 Registry 分發(fā)鏡像。
無(wú)論采用何種方式保存和分發(fā)鏡像,首先都得給鏡像命名。
當(dāng)我們執(zhí)行 docker build
命令時(shí)已經(jīng)為鏡像取了個(gè)名字,例如前面:
docker build -t ubuntu-with-vi
這里的 ubuntu-with-vi
就是鏡像的名字。通過 dock images 可以查看鏡像的信息。
這里注意到 ubuntu-with-vi
對(duì)應(yīng)的是 REPOSITORY
,而且還有一個(gè)叫 latest
的 TAG
。
實(shí)際上一個(gè)特定鏡像的名字由兩部分組成:repository 和 tag。
[image name] = [repository]:[tag]
如果執(zhí)行 docker build 時(shí)沒有指定 tag,會(huì)使用默認(rèn)值 latest。其效果相當(dāng)于:
docker build -t ubuntu-with-vi:latest
tag 常用于描述鏡像的版本信息,比如 httpd 鏡像
當(dāng)然 tag 可以是任意字符串,比如 ubuntu 鏡像
千萬(wàn)別被 latest tag 給誤導(dǎo)了。latest 其實(shí)并沒有什么特殊的含義。當(dāng)沒指明鏡像 tag 時(shí),Docker 會(huì)使用默認(rèn)值 latest,僅此而已。
雖然 Docker Hub 上很多 repository 將 latest 作為最新穩(wěn)定版本的別名,但這只是一種約定,而不是強(qiáng)制規(guī)定。
所以我們?cè)谑褂苗R像時(shí)最好還是避免使用 latest,明確指定某個(gè) tag,比如 httpd:2.3,ubuntu:xenial。
借鑒軟件版本命名方式能夠讓用戶很好地使用鏡像。
一個(gè)高效的版本命名方案可以讓用戶清楚地知道當(dāng)前使用的是哪個(gè)鏡像,同時(shí)還可以保持足夠的靈活性。
每個(gè) repository 可以有多個(gè) tag,而多個(gè) tag 可能對(duì)應(yīng)的是同一個(gè)鏡像。下面通過例子為大家介紹 Docker 社區(qū)普遍使用的 tag 方案。
假設(shè)我們現(xiàn)在發(fā)布了一個(gè)鏡像 myimage,版本為 v1.9.1。那么我們可以給鏡像打上四個(gè) tag:1.9.1、1.9、1 和 latest。
我們可以通過 docker tag 命令方便地給鏡像打 tag。
docker tag myimage-v1.9.1 myimage:1
docker tag myimage-v1.9.1 myimage:1.9
docker tag myimage-v1.9.1 myimage:1.9.1
docker tag myimage-v1.9.1 myimage:latest
過了一段時(shí)間,我們發(fā)布了 v1.9.2。這時(shí)可以打上 1.9.2 的 tag,并將 1.9、1 和 latest 從 v1.9.1 移到 v1.9.2。
命令為:
docker tag myimage-v1.9.2 myimage:1
docker tag myimage-v1.9.2 myimage:1.9
docker tag myimage-v1.9.2 myimage:1.9.2
docker tag myimage-v1.9.2 myimage:latest
之后,v2.0.0 發(fā)布了。這時(shí)可以打上 2.0.0、2.0 和 2 的 tag,并將 latest 移到 v2.0.0。
命令為:
docker tag myimage-v2.0.0 myimage:2
docker tag myimage-v2.0.0 myimage:2.0
docker tag myimage-v2.0.0 myimage:2.0.0
docker tag myimage-v2.0.0 myimage:latest
這種 tag 方案使鏡像的版本很直觀,用戶在選擇非常靈活:
myimage:1 始終指向 1 這個(gè)分支中最新的鏡像。
myimage:1.9 始終指向 1.9.x 中最新的鏡像。
myimage:latest 始終指向所有版本中最新的鏡像。
如果想使用特定版本,可以選擇 myimage:1.9.1、myimage:1.9.2 或 myimage:2.0.0。
Docker Hub 上很多 repository 都采用這種方案,所以大家一定要熟悉。
上述內(nèi)容就是如何進(jìn)行Docker 鏡像命名的實(shí)踐 ,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。