鏡像的概念
鏡像是一個包含程序運行必要依賴環境和代碼的只讀文件,它采用分層的文件系統,將每一次改變以讀寫層的形式增加到原來的只讀文件上。鏡像是容器運行的基石。
- 下圖展示的是Docker鏡像的系統結構。其中,鏡像的最底層必須是一個稱為啟動文件系統(bootfs)的鏡像,用戶不會與這一層直接打交道。bootfs的上層鏡像就是我們熟知的根鏡像。
- 鏡像的本質是磁盤上一系列文件的集合。
查看
docker images:可以列出本機上的所有鏡像:
- REPOSITORY:倉庫名稱。
- [namespace/centos]:由命名空間和實際的倉庫名稱組成。當你再Docker Hub上注冊一個賬戶時,賬戶名自動成為你的命名空間,該命名空間是用來區分Docke Hub上注冊的不同用戶或者組織的。
- [centos]:只有倉庫名。屬於頂級命名空間,只用於官方鏡像。
- [dl.dockerpool.com:5000\centos:7]:指定URL路徑的方式。適用於自己搭建的Hub或者第三方Hub上獲取鏡像。
- TAG:用於區分同一個倉庫中的不同鏡像。
- IMAGE ID:鏡像的唯一標識:64位HashID。
- CREATED:鏡像 的創建時間。
- SIZE:鏡像所占用的虛擬大小,該大小包含了所有共享文件的大小。
docker images ce*:通配符,找到符合條件的一系列鏡像。
docker inspect [NAME]/[CONTAINER ID]:images只會列出鏡像的基本信息,詳細信息可以通過inspect命令查看:
下載
下載之前推薦使用加速器
阿里雲的鏡像加速大家參考阿里給的方案https://dev.aliyun.com/search.html,不過我試了幾次發現貌似阿里給的方案有點問題(我只試了centos7),所以阿里的方案大家自定參考,我就不說了, 我說下我配置阿里雲鏡像成功的方法。
- 首先要在上面的連接中注冊阿里雲開發者平台賬號,我們在加速器選項中得到一個各自專屬的加速器地址。
配置阿里雲的docker鏡像庫:在阿里雲開通容器鏡像服務拿到加速地址在執行以下命令:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://{自已的編碼}.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
docker run:命令運行時會在本地尋找鏡像,找不到的時候就會去Docker Hub上面搜索並下載后運行。
docker search [NAME]
:下載之前可以通過search命令查找搜索符合的鏡像:
- NAME:鏡像名稱。
- DESCRIPTION:鏡像的簡要描述。
- STARS:用戶對鏡像的評分。
- OFFICIAL:是否為官方鏡像。
- AUTOMATED:是否使用了自動構建。
docker pull [NAME]:可以預先將鏡像拉到本地。鏡像名必須完整地包含命名空間和倉庫名。如果一個倉庫中存在多個鏡像,還必須制定TAG,否則使用默認TAG:latest。
刪除
docker rmi [NAME]/[CONTAINER ID]對於不需要的鏡像,可以使用rmi命令刪除。與移除容器的命令rm相比,刪除鏡像的命令多了一個i,i即image的意思。
- 刪除多個:多個鏡像之間使用空格隔開。
-f
:強制刪除,大部分刪不掉的情況可能是因為這個鏡像被容器依賴了,可以選擇先移除容器。
docker rm $(docker ps -a -q):如果本地有很多已經停止運行的容器,一個個刪除很麻煩,可以使用下面的命令將這些容器一次性刪除,這樣就能減少無用容器對鏡像的依賴。 docker ps -a -q:用來列出所有容器的ID