容器技術(三) 映象命名的最佳實踐 13

2022-06-06 05:09:14 字數 3629 閱讀 8942

在多個docker host 上使用 映象方法:

(1)為映象命名

​ 無論採用何種方式儲存和分發映象,首先都得給映象命名。當我們執行docker build命令時已經為映象取了個名字,例如前面:docker build -t ubuntu-with-vi

​ 這裡的ubuntu-with-vi就是映象的名字。通過 dock images 可以檢視映象的資訊。

root@cuiyongchao:/dockerfile# docker images ubuntu-with-vi

repository tag image id created size

ubuntu-with-vi latest 218e302a1e28 22 hours ago 167mb

root@cuiyongchao:/dockerfile#

​ 這裡注意到ubuntu-with-vi對應的是repository,而且還有乙個叫latesttag

[image name] = [repository]:[tag]
​ 如果執行 docker build 時沒有指定 tag,會使用預設值 latest。其效果相當於:

docker build -t ubuntu-with-vi:latest
tag 常用於描述映象的版本資訊, tag 可以是任意字串 :

root@cuiyongchao:/dockerfile#(1)小心 latest tag

​ 千萬別被 latest tag 給誤導了。latest 其實並沒有什麼特殊的含義。當沒指明映象 tag 時,docker 會使用預設值 latest,僅此而已。

​ 雖然 docker hub 上很多 repository 將 latest 作為最新穩定版本的別名,但這只是一種約定,而不是強制規定。所以我們在使用映象時最好還是避免使用 latest,明確指定某個 tag,比如 httpd:2.3,ubuntu:xenial。

(2)tag 最優使用方式

​ 借鑑軟體版本命名方式能夠讓使用者很好地使用映象。乙個高效的版本命名方案可以讓使用者清楚地知道當前使用的是哪個映象,同時還可以保持足夠的靈活性。

​ 每個 repository 可以有多個 tag,而多個 tag 可能對應的是同乙個映象。下面通過例子為大家介紹 docker 社群普遍使用的 tag 方案。假設我們現在發布了乙個映象 myimage,版本為 v1.9.1。那麼我們可以給映象打上四個 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

過了一段時間,我們發布了 v1.9.2。這時可以打上 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 發布了。這時可以打上 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 這個分支中最新的映象。

myimage:1.9 始終指向 1.9.x 中最新的映象。

myimage:latest 始終指向所有版本中最新的映象。

如果想使用特定版本,可以選擇 myimage:1.9.1、myimage:1.9.2 或 myimage:2.0.0。

高效構建 Docker 映象的最佳實踐

docker 可謂是開啟了容器化技術的新時代,現在無論大中小公司基本上都對容器化技術有不同程度的嘗試,或是已經進行了大量容器化的改造。伴隨著 kubernetes 和 cloud native 等技術和理念的普及,也大大增加了業務容器化需求。而這一切的推進,不可避免的技術之一便是構建容器映象。在本場...

Unity遊戲開發技術的最佳實踐

活動詳情 作為全球規模最大的unity開發者聚會,歷年的unite大會都成為開發者們獲取unity最新技術知識,交流開發經驗,把握行業發展脈搏,體驗全球前沿科技與高品質made with unity作品的絕佳平台。在過去的10年中,來自全球數以萬計的開發者們,因為心中對技術的熱愛與開發夢想,在世界各...

Unity遊戲開發技術的最佳實踐

活動詳情 作為全球規模最大的unity開發者聚會,歷年的unite大會都成為開發者們獲取unity最新技術知識,交流開發經驗,把握行業發展脈搏,體驗全球前沿科技與高品質made with unity作品的絕佳平台。在過去的10年中,來自全球數以萬計的開發者們,因為心中對技術的熱愛與開發夢想,在世界各...