亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Docker 怎么跳過本地安裝官方的鏡像?

Docker 怎么跳過本地安裝官方的鏡像?

千巷貓影 2018-08-27 17:15:19
我本地下載了一個 MySql 鏡像,想安裝官方的。docker pull mysql 后它老自動把本地的給裝上去了。刪除本地的mysql docker rmi -f mysqldocker images 查看確實沒了,但是再次 docker pull mysql,發現安裝的還是之前的那個……怎么跳過本地的 MySql ,安裝官方的鏡像啊? 謝謝
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

是不是有什么容器正在使用這個 mysql 鏡像?或者你是否重新docker tag過這個鏡像?或者使用其它版本的mysql鏡像?或者在使用基于 debian:jessie 的鏡像?

要知道鏡像并非單一文件,而是存儲層的集合。當你執行 docker rmi -f mysql 的時候,實際上是刪除 mysql:latest 這個tag,因此第一行一般是 Untagged: mysql:latest

接下來的邏輯是,如果沒有其它tag指向該存儲層,則會真實刪除該存儲層,然后繼續查詢下一層的存儲層是否還有人在使用,沒有繼續刪除,直到某一層發現還有容器或者鏡像依賴該存儲層,那么就停止刪除。所以當你執行 docker rmi 的時候,可以觀察一下出現了多少個 Deleted: sha256: ...,這就是刪除了多少層,其它的并未刪除。

那么假如你重新 docker tag 了這個mysql鏡像,那么當你執行 docker rmi 的時候,只會執行 untag 的操作,而不會真的刪除存儲層。

又或者系統有其它鏡像是基于相同的基礎鏡像 debian:jessie 的,那么docker rmi 也只會刪到這一層就停止了,以后每次pull 也是從這層開始。

同樣,這種分層存儲的概念也會影響你的 docker pull。 當你執行docker pull的時候,會查看官方 docker:latest 的每一層的校驗值,然后到本地比對,看看哪些已經存在,如果存在就不重復pull,直接使用當前存儲層,如果不存在則pull新的。

拿剛才的假如你重新docker tag的例子,如果你之前重新tag過該 mysql:latest鏡像,那么docker rmi實際上沒有刪除該鏡像,而再次 docker pull mysql 的時候,發現所有存儲層本地都有,那必然不需要再次 pull,直接將最頂層tagmysql:latest即可。這種情況無需擔心,也不必強迫重新下載,因為sha256sum可以確保鏡像文件和官網的一致性。

所以你的問題需要看具體情況是什么來說。一般來說,在生產環境不建議使用 latest 標簽,而是明確指定版本,這樣才可能升級維護。


查看完整回答
反對 回復 2018-09-23
  • 2 回答
  • 0 關注
  • 1046 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號