基礎映像檔
目錄
所有 Dockerfile 都從基礎映像檔開始。基礎是您的映像檔擴充的映像檔。它指的是 Dockerfile 中 FROM
指令的內容。
FROM debian
在大多數情況下,您不需要建立自己的基礎映像檔。Docker Hub 包含一個龐大的 Docker 映像檔庫,適用於在您的建置中作為基礎映像檔使用。Docker 官方映像檔 是專門設計的一組強化、經過實戰測試的映像檔,支援各種平台、語言和框架。還有 Docker 認證發行商
所有 Dockerfile 都從基礎映像檔開始。基礎是您的映像檔擴充的映像檔。它指的是 Dockerfile 中 FROM
指令的內容。
FROM debian
在大多數情況下,您不需要建立自己的基礎映像檔。Docker Hub 包含一個龐大的 Docker 映像檔庫,適用於在您的建置中作為基礎映像檔使用。Docker 官方映像檔 是專門設計的一組強化、經過實戰測試的映像檔,支援各種平台、語言和框架。還有 Docker 認證發行商
假設名為 hello
的可執行二進位檔存在於 建置上下文 的根目錄。您可以使用以下 docker build
命令建置此 Docker 映像檔
$ docker build --tag hello .
要執行您的新映像檔,請使用 docker run
命令
$ docker run --rm hello
只要 hello
二進位檔沒有任何執行階段相依性,此範例映像檔就可以成功執行。電腦程式通常依賴於執行階段環境中存在的某些其他程式或資源。例如
建置基礎映像檔或任何映像檔時,這是要考慮的重要層面。這就是為什麼使用 FROM scratch
建立基礎映像檔可能很困難,除了小型、簡單的程式之外。另一方面,僅在映像檔中包含您需要的內容也很重要,以減少映像檔大小和攻擊面。
一般來說,先準備一台運作中的機器,上面執行您想要打包成基礎映像檔的發行版本,雖然某些工具(例如 Debian 的 Debootstrap
例如,要建立一個 Ubuntu 基礎映像檔
$ sudo debootstrap focal focal > /dev/null
$ sudo tar -C focal -c . | docker import - focal
sha256:81ec9a55a92a5618161f68ae691d092bf14d700129093158297b3d01593f4ee3
$ docker run focal cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
在 Moby GitHub 儲存庫
有關建置映像檔和撰寫 Dockerfiles 的更多資訊,請參閱