什麼是映像檔?

說明

既然容器是一個隔離的程序,它從哪裡取得檔案和設定?您如何分享這些環境?

這就是容器映像檔的用途。容器映像檔是一個標準化的套件,包含執行容器所需的所有檔案、二進位檔、程式庫和設定。

PostgreSQLPython 映像檔尋找映像檔

Docker HubDocker 官方映像檔Docker 驗證發佈者Docker 贊助的開放原始碼 - Docker 透過其開放原始碼計畫贊助的開放原始碼專案所發佈和維護的映像檔

例如,RedisMemcachedNode.js試用看看


在本實作練習中,您將學習如何使用 Docker Desktop GUI 搜尋和提取容器映像檔。

搜尋並下載映像檔

  1. 開啟 Docker Desktop 儀表板,然後在左側導覽選單中選擇映像檔視圖。

    A screenshot of the Docker Desktop Dashboard showing the image view on the left sidebar
  2. 選擇搜尋要執行的映像檔按鈕。如果沒有看到它,請選擇螢幕頂端的全域搜尋列

    A screenshot of the Docker Desktop Dashboard showing the search ta
  3. 搜尋欄位中,輸入「welcome-to-docker」。搜尋完成後,選擇 docker/welcome-to-docker 映像檔。

    A screenshot of the Docker Desktop Dashboard showing the search results for the docker/welcome-to-docker image
  4. 選擇提取以下載映像檔。

了解映像檔

下載映像檔後,您可以透過 GUI 或 CLI 了解映像檔的許多詳細資訊。

  1. 在 Docker Desktop 儀表板中,選擇映像檔視圖。

  2. 選擇 docker/welcome-to-docker 映像檔以開啟映像檔的詳細資訊。

    A screenshot of the Docker Desktop Dashboard showing the images view with an arrow pointing to the docker/welcome-to-docker image
  3. 映像檔詳細資訊頁面會顯示映像檔分層、映像檔中安裝的套件和程式庫,以及任何已發現的漏洞等資訊。

    A screenshot of the image details view for the docker/welcome-to-docker image

請按照說明使用 CLI 搜尋和提取 Docker 映像檔以檢視其分層。

搜尋並下載映像檔

  1. 開啟終端機,並使用 docker search 命令搜尋映像檔

    docker search docker/welcome-to-docker
    

    您將看到如下所示的輸出

    NAME                       DESCRIPTION                                     STARS     OFFICIAL
    docker/welcome-to-docker   Docker image for new users getting started w…   20
    

    此輸出顯示 Docker Hub 上可用相關映像檔的資訊。

  2. 使用 docker pull 命令提取映像檔。

    docker pull docker/welcome-to-docker
    

    您將看到如下所示的輸出

    Using default tag: latest
    latest: Pulling from docker/welcome-to-docker
    579b34f0a95b: Download complete
    d11a451e6399: Download complete
    1c2214f9937c: Download complete
    b42a2f288f4d: Download complete
    54b19e12c655: Download complete
    1fb28e078240: Download complete
    94be7e780731: Download complete
    89578ce72c35: Download complete
    Digest: sha256:eedaff45e3c78538087bdd9dc7afafac7e110061bbdd836af4104b10f10ab693
    Status: Downloaded newer image for docker/welcome-to-docker:latest
    docker.io/docker/welcome-to-docker:latest
    

    每一行代表映像檔的不同已下載分層。請記住,每個分層都是一組檔案系統變更,並提供映像檔的功能。

了解映像檔

  1. 使用 docker image ls 命令列出您已下載的映像檔

    docker image ls
    

    您將看到如下所示的輸出

    REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
    docker/welcome-to-docker   latest    eedaff45e3c7   4 months ago   29.7MB
    

    該命令會顯示系統上目前可用的 Docker 映像檔清單。docker/welcome-to-docker 的總大小約為 29.7MB。

    映像檔大小

    這裡顯示的映像檔大小反映的是映像檔的未壓縮大小,而不是分層的下載大小。

  2. 使用 docker image history 命令列出映像檔的分層

    docker image history docker/welcome-to-docker
    

    您將看到如下所示的輸出

    IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
    648f93a1ba7d   4 months ago   COPY /app/build /usr/share/nginx/html # buil…   1.6MB     buildkit.dockerfile.v0
    <missing>      5 months ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
    <missing>      5 months ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B
    <missing>      5 months ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
    <missing>      5 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:9e3b2b63db9f8fc7…   4.62kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:57846632accc8975…   3.02kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:3b1b9915b7dd898a…   298B
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:caec368f5a54f70a…   2.12kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:01e75c6dd0ce317d…   1.62kB
    <missing>      5 months ago   /bin/sh -c set -x     && addgroup -g 101 -S …   9.7MB
    <missing>      5 months ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1            0B
    <missing>      5 months ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.25.3     0B
    <missing>      5 months ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
    <missing>      5 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
    <missing>      5 months ago   /bin/sh -c #(nop) ADD file:ff3112828967e8004…   7.66MB
    

    此輸出會顯示所有分層、其大小,以及用於建立分層的命令。

    檢視完整命令

    如果您在命令中加入 --no-trunc 旗標,您將看到完整命令。請注意,由於輸出採用表格格式,較長的命令會導致輸出難以瀏覽。


在本演練中,您搜尋並提取了 Docker 映像檔。除了提取 Docker 映像檔之外,您還了解了 Docker 映像檔的分層。

其他資源

以下資源將幫助您進一步了解探索、尋找和建置映像檔