什麼是映象?
解釋
看到一個 容器 是一個隔離的程序,它從哪裡獲取其檔案和配置?你如何共享這些環境?
這就是容器映象發揮作用的地方!
容器映象是一個標準化包,其中包含執行容器所需的所有檔案、二進位制檔案、庫和配置。
對於一個 PostgreSQL 映象,該映象將打包資料庫二進位制檔案、配置檔案和其他依賴項。對於 Python Web 應用程式,它將包含 Python 執行時、您的應用程式程式碼及其所有依賴項。
映象有兩個重要原則
映象是不可變的。一旦建立映象,就無法修改。你只能建立一個新的映象或在它之上新增更改。
容器映象由層組成。每個層都代表一組檔案系統更改,這些更改新增、刪除或修改檔案。
這兩個原則使您可以擴充套件或新增到現有映象。例如,如果您正在構建 Python 應用程式,您可以從 Python 映象 開始,並新增額外的層來安裝您的應用程式的依賴項並新增您的程式碼。這使您可以專注於您的應用程式,而不是 Python 本身。
查詢映象
Docker Hub 是儲存和分發映象的預設全球市場。它擁有超過 100,000 個由開發人員建立的映象,您可以本地執行這些映象。您可以搜尋 Docker Hub 映象並直接從 Docker Desktop 執行它們。
Docker Hub 提供各種 Docker 支援和認可的映象,稱為 Docker 可信內容。這些提供完全託管的服務或為您的映象提供出色的起點。這些包括
- Docker 官方映象 - 一套精選的 Docker 儲存庫,作為大多數使用者的起點,並且是 Docker Hub 上最安全的儲存庫之一
- Docker 驗證釋出者 - 來自商業釋出者的高質量映象,由 Docker 驗證
- Docker 贊助的開源 - 由 Docker 透過 Docker 開源計劃釋出和維護的映象
例如,Redis 和 Memcached 是幾個流行的即用型 Docker 官方映象。您可以下載這些映象,並在幾秒鐘內啟動和執行這些服務。還有一些基礎映象,例如 Node.js Docker 映象,您可以將其用作起點並新增您自己的檔案和配置。
試一試
在這個動手操作中,您將學習如何使用 Docker Desktop GUI 搜尋和拉取容器映象。
搜尋並下載映象
開啟 Docker Dashboard 並選擇左側導航選單中的“映象”檢視。
選擇“搜尋要執行的映象”按鈕。如果您沒有看到它,請選擇螢幕頂部的“全域性搜尋欄”。
在“搜尋”欄位中,輸入“welcome-to-docker”。搜尋完成後,選擇
docker/welcome-to-docker
映象。選擇“拉取”下載映象。
瞭解映象
下載映象後,您可以透過 GUI 或 CLI 瞭解有關映象的大量詳細資訊。
在 Docker Dashboard 中,選擇“映象”檢視。
選擇“docker/welcome-to-docker”映象以開啟有關映象的詳細資訊。
映象詳細資訊頁面將向您展示有關映象層、映象中安裝的包和庫以及任何發現的漏洞的資訊。
按照說明使用 CLI 搜尋和拉取 Docker 映象以檢視其層。
搜尋並下載映象
開啟終端並使用
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 上可用的相關映象的資訊。
使用
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
每行都代表映象的不同下載層。請記住,每個層都是一組檔案系統更改,並提供映象的功能。
瞭解映象
使用
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。映象大小
這裡顯示的映象大小反映了映象的未壓縮大小,而不是層的下載大小。
使用
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 映象的層。
其他資源
以下資源將幫助您進一步瞭解探索、查詢和構建映象。
下一步
現在您已經瞭解了映象的基礎知識,是時候學習透過登錄檔分發映象了。