Docker是一個開源的容器技術,可以用來建置、發布和運行應用程式。透過使用Docker映像,使用者可以簡單、快速地下載和安裝預先建置好的應用程式或容器環境。
Docker映像是由多個層(Layer)組成的,每一層都包含了一個檔案系統的快照。當使用者pull下Docker映像時,實際上就是從Docker Registry中取得映像的所有層,並將其組合起來建構成完整的Docker映像。
那麼,Docker映像在本機儲存的位置是什麼呢?本文將為您詳細介紹。
首先,我們需要查看目前本機的Docker映像清單。在終端機輸入下方指令:
docker images
執行後,將會列出本機上所有的Docker映像列表,包括映像ID、映像名稱、映像標籤、映像大小等資訊。如下圖所示:
從上圖可以看出,每個鏡像都有一個唯一的ID、一個名稱和一些標籤(也稱為版本)。其中,REPOSITORY欄位表示鏡像的名稱,TAG欄位表示鏡像的標籤,IMAGE ID欄位則是該鏡像的唯一識別碼。
在Docker中,每個映像都是由多個層(Layer)組成的。因此,當使用者下載或建立Docker映像時,實際上是將映像的所有層下載到本機儲存中。
而在Linux系統中,Docker映像其實是儲存在/var/lib/docker
目錄下的。在終端機輸入下方指令:
sudo ls -l /var/lib/docker/
執行後,終端機將會顯示出/var/lib/docker/目錄下所有的檔案和資料夾清單。其中,/var/lib/docker/image
資料夾是Docker儲存映像的主要位置。如下圖所示:
在/var/lib/docker/image/overlay2/imagedb/content/sha256
目錄下,儲存了所有已下載的Docker映像(以映像ID命名),即所有層的儲存位置。在每個鏡像ID目錄下,都有一個名為「real」或「diff」文件,代表該層的儲存位置。
對於Docker映像的每一層,其儲存位置可以透過執行下面的命令來確認:
docker history <image_name>:<tag>
例如,對於nginx映像,執行指令:
docker history nginx:latest
將會輸出下列結果:
IMAGE CREATED CREATED BY SIZE COMMENT 84cf8d0a2e04 3 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B <missing> 3 weeks ago /bin/sh -c #(nop) STOPSIGNAL SIGTERM 0B <missing> 3 weeks ago /bin/sh -c #(nop) EXPOSE 80 0B <missing> 3 weeks ago /bin/sh -c ln -sf /dev/stdout /var/log/nginx… 22B <missing> 3 weeks ago /bin/sh -c set -x && apt-get update && ap… 68.2MB <missing> 3 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=2.1.0.6 0B <missing> 3 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.16.1 0B <missing> 4 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B <missing> 4 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B <missing> 4 weeks ago /bin/sh -c #(nop) ADD file:7fbfce9f6a99e63a5… 63.2MB
其中,每一層的SIZE欄位表示該層的實際佔用空間大小。這個指令輸出結果的第一列就是Docker鏡像每一層的ID,從上到下依序代表鏡像的各個層。
我們可以根據這個指令的輸出結果,確認每一層具體的儲存位置。例如,在上述命令的輸出結果中,最後一列是該層的描述訊息,其中包括了該層的原始命令和參數。
對於nginx鏡像的第一層(ID為“84cf8d0a2e04”),該層的CMD為“CMD ["nginx" "-g" "daemon…””,即啟動nginx服務;對於後面的各層,則是其它一些配置或命令。因此,我們可以大致猜測Docker映像每一層的儲存位置。
透過上述指令,使用者可以在Linux系統下查看本機儲存的Docker映像。 Docker映像的層以映像ID為資料夾名稱存放在/var/lib/docker/image/overlay2/imagedb/content/sha256
目錄中。每一層分別儲存在「real」或「diff」檔案中。
對於每一層映像的儲存位置,可以透過執行docker history
指令查看,在輸出結果中尋找該層的描述訊息,從而大致猜測該層的儲存位置。
在使用Docker映像和容器時,了解Docker映像的儲存位置,可以更好地管理本機儲存空間,以及對Docker映像和容器進行備份和復原作業。
以上是看看docker鏡像pull下來放在哪裡的詳細內容。更多資訊請關注PHP中文網其他相關文章!