什麼是映象?
解釋
既然容器是一個隔離的程序,那麼它的檔案和配置是從哪裡來的呢?您如何共享這些環境?
這就是容器映象的作用所在。容器映象是一個標準化的軟體包,它包含執行一個容器所需的所有檔案、二進位制檔案、庫和配置。
對於PostgreSQL映象,該映象將打包資料庫二進位制檔案、配置檔案和其他依賴項。對於Python Web應用程式,它將包括Python執行時、您的應用程式碼及其所有依賴項。
映象有兩個重要的原則:
映象是不可變的。一旦映象被建立,就不能被修改。您只能建立一個新映象或在其之上新增更改。
容器映象由多個層組成。每一層都代表一組檔案系統的更改,用於新增、刪除或修改檔案。
這兩個原則允許您擴充套件或新增到現有映象。例如,如果您正在構建一個 Python 應用程式,您可以從Python 映象開始,並新增額外的層來安裝您應用程式的依賴項和新增您的程式碼。這讓您能夠專注於您的應用程式,而不是 Python 本身。
查詢映象
Docker Hub 是用於儲存和分發映象的預設全球市場。它擁有超過100,000個由開發者建立的映象,您可以在本地執行它們。您可以在 Docker Desktop 中直接搜尋 Docker Hub 映象並執行它們。
Docker Hub 提供了多種 Docker 支援和認可的映象,稱為 Docker 可信內容。這些提供了完全託管的服務,或者是您構建自己映象的絕佳起點。這些包括:
- Docker 官方映象 - 一組精選的 Docker 倉庫,是大多數使用者的起點,並且是 Docker Hub 上最安全的映象之一。
- Docker 認證釋出者 - 來自經 Docker 驗證的商業釋出者的高質量映象。
- Docker 贊助的開源專案 - 由 Docker 透過其開源專案贊助的開源專案釋出和維護的映象。
例如,Redis 和 Memcached 是一些流行的即用型 Docker 官方映象。您可以下載這些映象,並在幾秒鐘內啟動並執行這些服務。還有一些基礎映象,比如 Node.js Docker 映象,您可以將其用作起點,並新增您自己的檔案和配置。
試一試
在這個實踐中,您將學習如何使用 Docker Desktop GUI 搜尋和拉取容器映象。
搜尋並下載映象
開啟 Docker Desktop 儀表板,並在左側導航選單中選擇 Images 檢視。
選擇 Search images to run 按鈕。如果您沒有看到它,請選擇螢幕頂部的全域性搜尋欄。
在搜尋欄位中,輸入“welcome-to-docker”。搜尋完成後,選擇
docker/welcome-to-docker
映象。選擇 Pull 下載映象。
瞭解映象資訊
一旦您下載了映象,您就可以透過 GUI 或 CLI 瞭解關於該映象的許多詳細資訊。
在 Docker Desktop 儀表板中,選擇 Images 檢視。
選擇 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 映象的層。
其他資源
以下資源將幫助您瞭解更多關於探索、查詢和構建映象的資訊:
後續步驟
既然您已經瞭解了映象的基礎知識,是時候學習如何透過註冊中心分發映象了。
什麼是註冊中心?