在 Raspberry Pi OS (32-bit) 上安裝 Docker Engine

要開始在 Raspberry Pi OS 上使用 Docker Engine,請確保您滿足先決條件,然後按照安裝步驟進行操作。

重要

此安裝說明適用於 32-bit (armhf) 版本的 Raspberry Pi OS。如果您使用的是 64-bit (arm64) 版本,請按照 Debian 的說明進行操作。

先決條件

防火牆限制

警告

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

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

作業系統要求

要安裝 Docker Engine,您需要以下作業系統版本之一

  • 32-bit Raspberry Pi OS Bookworm 12 (穩定版)
  • 32-bit Raspberry Pi OS Bullseye 11 (舊穩定版)

解除安裝舊版本

在安裝 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` 可能會報告您沒有安裝這些軟體包中的任何一個。

儲存在 /var/lib/docker/ 中的映象、容器、卷和網路在您解除安裝 Docker 時不會自動刪除。如果您想進行全新安裝,並希望清理任何現有資料,請閱讀解除安裝 Docker Engine部分。

安裝方法

您可以根據需要,透過不同方式安裝 Docker Engine

Apache 許可證,版本 2.0。有關完整許可證,請參閱 LICENSE

使用 `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/raspbian/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/raspbian \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
  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:28.4.0-1~raspbian.12~bookworm
    5:28.3.3-1~raspbian.12~bookworm
    ...
    

    選擇所需的版本並安裝

    $ VERSION_STRING=5:28.4.0-1~raspbian.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/raspbian/dists/

  2. 在列表中選擇您的 Raspberry Pi OS 版本。

  3. 轉到 `pool/stable/` 並選擇適用的架構(`amd64`、`armhf`、`arm64` 或 `s390x`)。

  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 守護程序會自動啟動。

  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/ 提供了一個便利指令碼,用於以非互動方式將 Docker 安裝到開發環境中。不建議在生產環境中使用該便利指令碼,但它對於建立適合您需求的自動化配置指令碼非常有用。另請參閱使用倉庫安裝步驟,瞭解使用軟體包倉庫進行安裝的步驟。該指令碼的原始碼是開源的,您可以在 GitHub 上的 docker-install 倉庫中找到它。

在本地執行從網際網路下載的指令碼之前,請務必仔細檢查。安裝前,請熟悉便捷指令碼的潛在風險和限制

  • 該指令碼需要 rootsudo 許可權才能執行。
  • 該指令碼會嘗試檢測您的 Linux 發行版和版本,併為您配置軟體包管理系統。
  • 該指令碼不允許您自定義大多數安裝引數。
  • 該指令碼會安裝依賴項和推薦項,而不會徵求確認。這可能會安裝大量軟體包,具體取決於您主機的當前配置。
  • 預設情況下,該指令碼會安裝 Docker、containerd 和 runc 的最新穩定版本。當使用此指令碼配置機器時,可能會導致 Docker 的主版本發生意外升級。在部署到生產系統之前,請務必在測試環境中測試升級。
  • 該指令碼並非為升級現有 Docker 安裝而設計。使用該指令碼更新現有安裝時,依賴項可能不會更新到預期版本,從而導致版本過時。
提示

在執行之前預覽指令碼步驟。您可以使用 --dry-run 選項執行指令碼,以瞭解指令碼在呼叫時將執行哪些步驟

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run

此示例從 https://get.docker.com/ 下載指令碼並執行它,以在 Linux 上安裝最新穩定版本的 Docker

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Executing docker install script, commit: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>

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

以非特權使用者身份使用 Docker,還是以無根模式安裝?

安裝指令碼需要 rootsudo 許可權來安裝和使用 Docker。如果您希望授予非 root 使用者訪問 Docker 的許可權,請參閱Linux 的安裝後步驟。您也可以在沒有 root 許可權的情況下安裝 Docker,或者將其配置為以無根模式執行。有關以無根模式執行 Docker 的說明,請參閱以非 root 使用者身份執行 Docker 守護程序(無根模式)

安裝預釋出版本

Docker 還在 https://test.docker.com/ 提供了一個便利指令碼,用於在 Linux 上安裝 Docker 的預釋出版本。該指令碼與 get.docker.com 上的指令碼相同,但會配置您的包管理器以使用 Docker 包倉庫的測試通道。測試通道包括 Docker 的穩定版和預釋出版(測試版、釋出候選版)。使用此指令碼可以提前體驗新版本,並在它們作為穩定版釋出之前在測試環境中進行評估。

要從測試通道在 Linux 上安裝最新版本的 Docker,請執行

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

使用便捷指令碼後升級 Docker

如果您使用便利指令碼安裝了 Docker,則應直接使用包管理器升級 Docker。重新執行便利指令碼沒有任何好處。如果它試圖重新安裝主機上已經存在的倉庫,重新執行它可能會導致問題。

解除安裝 Docker Engine

  1. 解除安裝 Docker Engine、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
    

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

後續步驟