在 Debian 上安裝 Docker Engine

若要開始在 Debian 上使用 Docker Engine,請確認您符合先決條件,然後按照安裝步驟操作。

先決條件

防火牆限制

警告

在安裝 Docker 之前,請務必考量下列安全性影響和防火牆不相容性。

  • 如果您使用 ufw 或 firewalld 來管理防火牆設定,請注意,當您使用 Docker 公開容器埠時,這些埠會繞過您的防火牆規則。如需詳細資訊,請參閱Docker 與 ufw
  • Docker 僅與 iptables-nftiptables-legacy 相容。在安裝 Docker 的系統上,不支援使用 nft 建立的防火牆規則。請確認您使用的任何防火牆規則集都是使用 iptablesip6tables 建立的,並且您已將它們新增至 DOCKER-USER 鏈,請參閱封包過濾和防火牆

作業系統需求

若要安裝 Docker Engine,您需要下列其中一個 Debian 版本的 64 位元版本

  • Debian Bookworm 12 (穩定版)
  • Debian Bullseye 11 (舊穩定版)

適用於 Debian 的 Docker Engine 與 x86_64 (或 amd64)、armhf、arm64 和 ppc64le (ppc64el) 架構相容。

解除安裝舊版本

您必須先解除安裝任何衝突的套件,才能安裝 Docker Engine。

您的 Linux 發行版本可能提供非官方的 Docker 套件,這些套件可能與 Docker 提供的官方套件衝突。您必須先解除安裝這些套件,才能安裝 Docker Engine 的官方版本。

要解除安裝的非官方套件如下

  • docker.io
  • docker-compose
  • docker-doc
  • podman-docker

此外,Docker Engine 依賴 containerdrunc。Docker Engine 將這些依賴項捆綁成一個套件:containerd.io。如果您先前已安裝 containerdrunc,請將它們解除安裝,以避免與 Docker Engine 捆綁的版本衝突。

執行下列命令以解除安裝所有衝突的套件

$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能回報您沒有安裝任何這些套件。

解除安裝 Docker 時,儲存在 /var/lib/docker/ 中的映像檔、容器、磁碟區和網路不會自動移除。如果您想要全新安裝,並且想要清除任何現有資料,請閱讀解除安裝 Docker Engine章節。

安裝方法

您可以根據您的需求以不同的方式安裝 Docker Engine

使用 apt 儲存庫安裝

在新主機上第一次安裝 Docker Engine 之前,您需要設定 Docker apt 儲存庫。之後,您可以從儲存庫安裝和更新 Docker。

  1. 設定 Docker 的 apt 儲存庫。

    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add the repository to Apt sources:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update

    注意

    如果您使用衍生發行版本,例如 Kali Linux,您可能需要替換此命令中預期會列印版本代號的部分

    $(. /etc/os-release && echo "$VERSION_CODENAME")
    

    將此部分替換為對應 Debian 版本的代號,例如 bookworm

  2. 安裝 Docker 套件。


    若要安裝最新版本,請執行

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    若要安裝特定版本的 Docker Engine,請先列出儲存庫中可用的版本

    # List the available versions:
    $ apt-cache madison docker-ce | awk '{ print $3 }'
    
    5:27.3.1-1~debian.12~bookworm
    5:27.3.0-1~debian.12~bookworm
    ...
    

    選擇所需的版本並安裝

    $ VERSION_STRING=5:27.3.1-1~debian.12~bookworm
    $ sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
    

  3. 透過執行 hello-world 映像檔來驗證安裝是否成功

    $ sudo docker run hello-world
    

    此指令會下載一個測試映像檔並在容器中執行。當容器執行時,它會印出一則確認訊息並結束。

您現在已成功安裝並啟動 Docker Engine。

提示

嘗試在沒有 root 權限的情況下執行時收到錯誤?

docker 使用者群組存在但沒有任何使用者,這就是為什麼您需要使用 sudo 來執行 Docker 指令的原因。請繼續前往 Linux 安裝後步驟 以允許非特權使用者執行 Docker 指令和進行其他選用設定步驟。

升級 Docker Engine

要升級 Docker Engine,請遵循 安裝說明 的步驟 2,選擇您要安裝的新版本。

從套件安裝

如果您無法使用 Docker 的 apt 儲存庫來安裝 Docker Engine,您可以下載適用於您版本的 deb 檔案並手動安裝。每次您想要升級 Docker Engine 時,都需要下載一個新的檔案。

  1. 前往 https://download.docker.com/linux/debian/dists/

  2. 在列表中選擇您的 Debian 版本。

  3. 前往 pool/stable/ 並選擇適用的架構(amd64armhfarm64s390x)。

  4. 下載 Docker Engine、CLI、containerd 和 Docker Compose 套件的以下 deb 檔案

    • containerd.io_<版本>_<架構>.deb
    • docker-ce_<版本>_<架構>.deb
    • docker-ce-cli_<版本>_<架構>.deb
    • docker-buildx-plugin_<版本>_<架構>.deb
    • docker-compose-plugin_<版本>_<架構>.deb
  5. 安裝 .deb 套件。將以下範例中的路徑更新為您下載 Docker 套件的位置。

    $ sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
      ./docker-ce_<version>_<arch>.deb \
      ./docker-ce-cli_<version>_<arch>.deb \
      ./docker-buildx-plugin_<version>_<arch>.deb \
      ./docker-compose-plugin_<version>_<arch>.deb
    

    Docker daemon 會自動啟動。

  6. 透過執行 hello-world 映像檔來驗證安裝是否成功

    $ sudo service docker start
    $ sudo docker run hello-world
    

    此指令會下載一個測試映像檔並在容器中執行。當容器執行時,它會印出一則確認訊息並結束。

您現在已成功安裝並啟動 Docker Engine。

提示

嘗試在沒有 root 權限的情況下執行時收到錯誤?

docker 使用者群組存在但沒有任何使用者,這就是為什麼您需要使用 sudo 來執行 Docker 指令的原因。請繼續前往 Linux 安裝後步驟 以允許非特權使用者執行 Docker 指令和進行其他選用設定步驟。

升級 Docker Engine

要升級 Docker Engine,請下載較新的套件檔案並重複 安裝程序,指向新的檔案。

使用便利腳本來安裝

Docker 在 https://get.docker.com/使用儲存庫安裝 步驟,以了解使用套件儲存庫安裝的安裝步驟。腳本的原始碼是開源的,您可以在 GitHub 上的 docker-install 儲存庫

提示

在執行之前預覽腳本步驟。您可以使用 --dry-run 選項來執行腳本,以了解腳本在呼叫時將會執行的步驟

此範例會從 https://get.docker.com/

您現在已成功安裝並啟動 Docker Engine。docker 服務會在基於 Debian 的發行版本上自動啟動。在基於 RPM 的發行版本上,例如 CentOS、Fedora、RHEL 或 SLES,您需要使用適當的 systemctlservice 指令手動啟動它。如訊息所示,非 root 使用者預設情況下無法執行 Docker 指令。

以非特權使用者身分使用 Docker,或是在無 root 模式下安裝?

安裝腳本需要 rootsudo 權限才能安裝和使用 Docker。如果您想授予非 root 使用者存取 Docker 的權限,請參閱 Linux 的安裝後步驟。您也可以在沒有 root 權限的情況下安裝 Docker,或設定為在無 root 模式下執行。有關在無 root 模式下執行 Docker 的說明,請參閱 以非 root 使用者身分執行 Docker daemon(無 root 模式)

安裝預發佈版本

Docker 也在 https://test.docker.com/ 提供了一個便捷腳本來安裝 Docker 在 Linux 上的預發布版本。 這個腳本與 get.docker.com 上的腳本相同,但會將您的套件管理器配置為使用 Docker 套件儲存庫的測試頻道。 測試頻道包含 Docker 的穩定版和預發布版本(測試版、候選版本)。 使用此腳本可以搶先體驗新版本,並在它們作為穩定版發布之前在測試環境中進行評估。

要從測試頻道安裝最新版本的 Docker 到 Linux,請運行

$ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh

使用便捷腳本後升級 Docker

如果您使用便捷腳本安裝了 Docker,則應該直接使用您的套件管理器升級 Docker。 重新運行便捷腳本沒有任何好處。 重新運行它可能會導致問題,如果它嘗試重新安裝主機上已存在的儲存庫。

解除安裝 Docker Engine

  1. 卸載 Docker 引擎、CLI、containerd 和 Docker Compose 套件

    $ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
    
  2. 主機上的映像、容器、磁碟區或自定義配置文件不會自動刪除。 要刪除所有映像、容器和磁碟區

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    
  3. 移除來源列表和金鑰環

    $ sudo rm /etc/apt/sources.list.d/docker.list
    $ sudo rm /etc/apt/keyrings/docker.asc
    

您必須手動刪除任何已編輯的配置文件。

後續步驟