Docker-tag
- 概述
- docker images
- tag的生成
- 創建運行容器時指定tag
- 手動指定docker tag
- 語法
- 栗子
- latest
- 運行鏡像
- 刪除鏡像
- docker鏡像的版本控制
概述
我們都知道git的tag功能是為了將代碼的某個狀態打上一個戳,通過tag我們可以很輕易的找到對應的提交。
docker的tag似乎更加靈活,docker將文件等信息的變動抽象為一次次的commit,每一次commit以后可能走向不同的分支,當我們完成dockerfile的構建后,會生成一串無規則的字符串代表此次生成的ID,此時,tag的作用就是為他創建一個友好的NAME,方便我們對鏡像庫的管理。
docker images
docker images命令 查詢本地的鏡像
關于tag,我們比較關注REPOSITORY(名稱),TAG(標簽),IMAGE ID(鏡像ID)三列。
tag的生成
創建運行容器時指定tag
手動指定docker tag
語法
docker tag old-image[:old-tag] new-image[:new-tag]tag幫助
[root@entel1 ~]# docker tag --helpUsage: docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]Tag an image into a repository-f, --force=false Force--help=false Print usage-f 意思是強制覆蓋
栗子
把entel_zmc_images :latest指定為entel_zmc_images:zmc_base
docker tag entel_zmc_images entel_zmc_images:zmc_baseps.記住,tag中不能再包含:(冒號)了!
docker tag entel_zmc_images entel_zmc_images:zmc_base,系統又幫我們加上了latest,也就是說,當我們不指定tag的時候,系統會自動幫我們補上latest的tag,然后去匹配,如果命中,就用對應的容器ID去創建新的tag。
當我們執行剛才命令的時候,其實還是存在一個entel_zmc_images:zmc_base的鏡像,按理來說會發生重名,但是系統還是優先使用了ID為7c2b8e830743的鏡像。
latest
這個latest其實在使用中不是最新的意思,而是默認值(defalut)的意思。
也就是說,如果在tag為可選的命令中,我們沒有寫上tag,如 docker pull entel_zmc_images:zmc_base vs docker pull entel_zmc_images ,前者有確定的tag,而后者沒有,這時系統會自動添加一個:latest標簽,然后去匹配。
這時如果latest對應的鏡像不存在就會報錯!
運行鏡像
理解了latest,那么下面兩種方式就很簡單了。
# 運行默認鏡像,默認會找tag docker run entel_zmc_images# 運行指定tag的鏡像 docker run entel_zmc_images:zmc_base刪除鏡像
同理,我們直接刪除某個name,系統只會刪除latest標簽的那一條記錄,如
docker rmi entel_zmc_images這個刪除操作不會影響相同ID的其他鏡像。
docker鏡像的版本控制
如果需要升級某個docker鏡像,我們可以這樣做。
1.給每個新生成的鏡像都打上相應版本的tag。此時可能存在image:latest、image:v1、image:v2等。
2.我們要從v1升級到v2,首先我們將導入的v2鏡像強制重命名為image:latest,命令為docker tag -f image:v2 image:latest
3.docker stop之前正在運行的容器
4.啟用docker run image,此時image的等價鏡像image:latest就是最新的V2鏡像。
總結下步驟:load/tag/stop/run
總結
以上是生活随笔為你收集整理的Docker-tag的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker容器导入导出
- 下一篇: Centos6.5安装/运行/启动/登录