為鏡像命名
創建鏡像時?docker build
?命令時已經為鏡像取了個名字,例如:?
docker build -t ubuntu-with-vi
這里的?ubuntu-with-vi
?就是鏡像的名字。通過 dock images 可以查看鏡像的信息。
1 root@ubuntu:~# docker images ubuntu-with-vi 2 REPOSITORY TAG IMAGE ID CREATED SIZE 3 ubuntu-with-vi latest b5410dfa9a42 11 days ago 170MB 4 root@ubuntu:~#
?
這里注意到?ubuntu-with-vi
?對應的是?REPOSITORY
,而且還有一個叫?latest
?的?TAG
。
實際上一個特定鏡像的名字由兩部分組成:
- repository
- tag
[image name] = [repository]:[tag]?
如果執行 docker build 時沒有指定 tag,會使用默認值 latest。其效果相當于:
docker build -t ubuntu-with-vi:latest
tag 常用于描述鏡像的版本信息,比如 httpd 鏡像:
當然 tag 可以是任意字符串,比如 ubuntu 鏡像:
?
?
千萬別被 latest tag 給誤導了。latest 其實并沒有什么特殊的含義。當沒指明鏡像 tag 時,Docker 會使用默認值 latest,僅此而已。雖然 Docker Hub 上很多 repository 將 latest 作為最新穩定版本的別名,但這只是一種約定,而不是強制規定。所以我們在使用鏡像時最好還是避免使用 latest,明確指定某個 tag,比如 httpd:2.3,ubuntu:xenial。
?
tag 使用最佳實踐
每個 repository 可以有多個 tag,而多個 tag 可能對應的是同一個鏡像。
假設現在發布了一個鏡像 myimage,版本為 v1.9.1。那么我們可以給鏡像打上四個 tag:1.9.1、1.9、1 和 latest。
?
我們可以通過 docker tag 命令方便地給鏡像打 tag。
1 docker tag myimage-v1.9.1 myimage:1 2 docker tag myimage-v1.9.1 myimage:1.9 3 docker tag myimage-v1.9.1 myimage:1.9.1 4 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。
?
1 docker tag myimage-v1.9.2 myimage:1 2 docker tag myimage-v1.9.2 myimage:1.9 3 docker tag myimage-v1.9.2 myimage:1.9.2 4 docker tag myimage-v1.9.2 myimage:latest?
之后,v2.0.0 發布了。這時可以打上 2.0.0、2.0 和 2 的 tag,并將 latest 移到 v2.0.0。
?
?
1 docker tag myimage-v2.0.0 myimage:2 2 docker tag myimage-v2.0.0 myimage:2.0 3 docker tag myimage-v2.0.0 myimage:2.0.0 4 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
?
?
----------------------引用來自-----------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587619&idx=1&sn=084d11955c8d4ca55eaf118e6784d689&chksm=8d3080baba4709ac8891081e6744ca50b4a02cf67c28348305d1a6b0e8ca582e29f3745c422d&scene=21#wechat_redirect