2023 iT邦鐵人賽 Day 19 - 映像檔的指令
前言
這幾天經歷了顛頗又艱難的學習,今天我們來點輕鬆愉快的小菜,請大家放心地躺著看。
基本上指令都跟容器大同小異,所以在容器的關卡已經熟悉的話,這裡其實也不會太難,負擔會比偏概念的文章還要小很多很多。
下載映像檔
在這之前,我們都是透過容器的 create
或是 run
,讓 Docker 自己抓映像檔。這次我們要使用正牌的下載方法: pull
1 | > docker image pull ruby:bullseye |
映像檔清單
我們一樣可以透過 ls
查看清單,跟容器不同的是,容器有分狀態,容器的 ls
是運作中的容器清單,而映像檔則沒有這樣分類,列出來的就是全部的映像檔:
1 | > docker image ls |
刪除映像檔
在刪除容器時,我們有提到,運作中的容器不給刪,映像檔也一樣,咦?映像檔不是沒有什麼運作不運作的狀態嗎?
不錯,各位客官,映像檔沒有狀態,但映像檔的刪除會受到容器影響。
請各位自行挑一個自己中意的映像檔 create 出一個容器,然後試著刪除映像檔,我這裡用了 httpd
create 出一個容器,只有 create 而已喔!還沒有運作喔!
1 | > docker image rm httpd |
這時 Docker 吐給你錯誤訊息,很氣憤地告訴你:「還有容器在使用這個映像檔啦!」
因為容器的建立,從映像檔那邊將映像層複製過來使用,在容器管理的概念上,只要還有容器,那就代表還需要有映像檔,以維持容器調節的持續運作,所以我們必須把所有使用該映像檔的容器都刪光後,讓該映像檔懸空,我們才能刪除該映像檔。
1 | > docker image rm httpd |
有沒有看到!在我們刪除映像檔時,他是一層一層的刪除映像層。他怎麼構成的就怎麼被刪除的。
霸道總裁?
人人都能成為映像檔眼中的霸道總裁,你若真想對他怎樣,他也會不吭一聲的讓你對他怎樣。
所以只要使出霸道總裁壁咚招式 -f
,即便映像檔已經有容器了,它還是得乖乖的聽你的話:
1 | > docker image rm httpd -f |
快刀斬亂麻!
沒錯!我們可以一鍵刪除所有沒有建立容器的映像檔們。
1 | > docker image prune |
總結
花了幾天介紹完映像檔,現在大家應該對 Docker 的概念與指令有些許程度的明瞭了。
明天我們來介紹一下映像檔的雲端倉庫 Docker hub。