在 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-nft
和iptables-legacy
相容。在安裝了 Docker 的系統上,不支援使用nft
建立的防火牆規則。請確保您使用的任何防火牆規則集都是用iptables
或ip6tables
建立的,並且將它們新增到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 依賴於 containerd
和 runc
。Docker Engine 將這些依賴項打包成一個捆綁包:containerd.io
。如果您之前安裝過 containerd
或 runc
,請解除安裝它們以避免與 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
Docker Engine 與 Docker Desktop for Linux 捆綁在一起。這是最簡單、最快捷的入門方式。
從 Docker 的 `apt` 倉庫設定並安裝 Docker Engine。
手動安裝並手動管理升級。
使用便捷指令碼。僅建議用於測試和開發環境。
Apache 許可證,版本 2.0。有關完整許可證,請參閱 LICENSE。
使用 `apt` 倉庫安裝
在新的主機上首次安裝 Docker Engine 之前,您需要設定 Docker 的 `apt` 倉庫。之後,您可以從該倉庫安裝和更新 Docker。
設定 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
安裝 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
透過執行
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 時,都需要下載一個新檔案。
在列表中選擇您的 Raspberry Pi OS 版本。
轉到 `pool/stable/` 並選擇適用的架構(`amd64`、`armhf`、`arm64` 或 `s390x`)。
下載以下 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
安裝 `.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 守護程序會自動啟動。
透過執行
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
倉庫中找到它。
在本地執行從網際網路下載的指令碼之前,請務必仔細檢查。安裝前,請熟悉便捷指令碼的潛在風險和限制
- 該指令碼需要
root
或sudo
許可權才能執行。 - 該指令碼會嘗試檢測您的 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,您需要使用相應的 systemctl
或 service
命令手動啟動它。如訊息所示,非 root 使用者預設無法執行 Docker 命令。
以非特權使用者身份使用 Docker,還是以無根模式安裝?
安裝指令碼需要
root
或sudo
許可權來安裝和使用 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
解除安裝 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
主機上的映象、容器、卷或自定義配置檔案不會自動刪除。要刪除所有映象、容器和卷
$ sudo rm -rf /var/lib/docker $ sudo rm -rf /var/lib/containerd
刪除源列表和金鑰環
$ sudo rm /etc/apt/sources.list.d/docker.list $ sudo rm /etc/apt/keyrings/docker.asc
您必須手動刪除任何已編輯的配置檔案。
後續步驟
- 繼續閱讀Linux 的安裝後步驟。