什麼是映象?

解釋

看到一個 容器 是一個隔離的程序,它從哪裡獲取其檔案和配置?你如何共享這些環境?

這就是容器映象發揮作用的地方!

容器映象是一個標準化包,其中包含執行容器所需的所有檔案、二進位制檔案、庫和配置。

對於一個 PostgreSQL 映象,該映象將打包資料庫二進位制檔案、配置檔案和其他依賴項。對於 Python Web 應用程式,它將包含 Python 執行時、您的應用程式程式碼及其所有依賴項。

映象有兩個重要原則

  1. 映象是不可變的。一旦建立映象,就無法修改。你只能建立一個新的映象或在它之上新增更改。

  2. 容器映象由層組成。每個層都代表一組檔案系統更改,這些更改新增、刪除或修改檔案。

這兩個原則使您可以擴充套件或新增到現有映象。例如,如果您正在構建 Python 應用程式,您可以從 Python 映象 開始,並新增額外的層來安裝您的應用程式的依賴項並新增您的程式碼。這使您可以專注於您的應用程式,而不是 Python 本身。

查詢映象

Docker Hub 是儲存和分發映象的預設全球市場。它擁有超過 100,000 個由開發人員建立的映象,您可以本地執行這些映象。您可以搜尋 Docker Hub 映象並直接從 Docker Desktop 執行它們。

Docker Hub 提供各種 Docker 支援和認可的映象,稱為 Docker 可信內容。這些提供完全託管的服務或為您的映象提供出色的起點。這些包括

例如,RedisMemcached 是幾個流行的即用型 Docker 官方映象。您可以下載這些映象,並在幾秒鐘內啟動和執行這些服務。還有一些基礎映象,例如 Node.js Docker 映象,您可以將其用作起點並新增您自己的檔案和配置。

試一試


在這個動手操作中,您將學習如何使用 Docker Desktop GUI 搜尋和拉取容器映象。

搜尋並下載映象

  1. 開啟 Docker Dashboard 並選擇左側導航選單中的“映象”檢視。

    A screenshot of the Docker Dashboard showing the image view on the left sidebar
  2. 選擇“搜尋要執行的映象”按鈕。如果您沒有看到它,請選擇螢幕頂部的“全域性搜尋欄”。

    A screenshot of the Docker Dashboard showing the search ta
  3. 在“搜尋”欄位中,輸入“welcome-to-docker”。搜尋完成後,選擇docker/welcome-to-docker 映象。

    A screenshot of the Docker Dashboard showing the search results for the docker/welcome-to-docker image
  4. 選擇“拉取”下載映象。

瞭解映象

下載映象後,您可以透過 GUI 或 CLI 瞭解有關映象的大量詳細資訊。

  1. 在 Docker Dashboard 中,選擇“映象”檢視。

  2. 選擇“docker/welcome-to-docker”映象以開啟有關映象的詳細資訊。

    A screenshot of the Docker 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 映象的層。

其他資源

以下資源將幫助您進一步瞭解探索、查詢和構建映象。

下一步

現在您已經瞭解了映象的基礎知識,是時候學習透過登錄檔分發映象了。