在 Ubuntu 上安裝 Docker Engine
若要在 Ubuntu 上開始使用 Docker Engine,請確保您符合先決條件,然後按照安裝步驟進行操作。
先決條件
防火牆限制
警告在安裝 Docker 之前,請務必考慮以下安全隱憂和防火牆不相容問題。
- 如果您使用 ufw 或 firewalld 來管理防火牆設定,請注意,當您使用 Docker 暴露容器連接埠時,這些連接埠會繞過您的防火牆規則。如需詳細資訊,請參閱Docker 與 ufw。
- Docker 僅與
iptables-nft和iptables-legacy相容。在已安裝 Docker 的系統上,不支援使用nft建立的防火牆規則。請確保您使用的任何防火牆規則集是使用iptables或ip6tables建立的,並且將它們添加到DOCKER-USER鏈中,請參閱封包過濾和防火牆。
作業系統要求
要安裝 Docker Engine,您需要下列其中一個 Ubuntu 版本的 64 位元版本
- Ubuntu Oracular 24.10
- Ubuntu Noble 24.04 (LTS)
- Ubuntu Jammy 22.04 (LTS)
適用於 Ubuntu 的 Docker Engine 與 x86_64 (或 amd64)、armhf、arm64、s390x 和 ppc64le (ppc64el) 架構相容。
注意在 Ubuntu 衍生發行版 (例如 Linux Mint) 上的安裝不被官方支援 (儘管它可能有效)。
解除安裝舊版本
在安裝 Docker Engine 之前,您需要解除安裝任何衝突的套件。
您的 Linux 發行版可能提供非官方的 Docker 套件,這些套件可能與 Docker 提供的官方套件衝突。在安裝 Docker Engine 的官方版本之前,您必須解除安裝這些套件。
要解除安裝的非官方套件包括
docker.iodocker-composedocker-compose-v2docker-docpodman-docker
此外,Docker Engine 依賴於 containerd 和 runc。Docker Engine 將這些依賴項捆綁為一個套件:containerd.io。如果您之前安裝過 containerd 或 runc,請解除安裝它們以避免與 Docker Engine 捆綁的版本發生衝突。
執行以下命令以解除安裝所有衝突的套件
$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get 可能會報告您沒有安裝這些套件。
儲存在 /var/lib/docker/ 中的映像檔、容器、磁碟區和網路在您解除安裝 Docker 時不會自動移除。如果您想從全新安裝開始,並傾向於清理任何現有資料,請閱讀解除安裝 Docker Engine 部分。
安裝方法
您可以根據您的需求,透過不同的方式安裝 Docker Engine
Docker Engine 隨附於 適用於 Linux 的 Docker Desktop。這是最簡單快捷的入門方式。
從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/ubuntu/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/ubuntu \ $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$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~ubuntu.24.04~noble 5:28.3.3-1~ubuntu.24.04~noble ...選擇所需版本並安裝
$ VERSION_STRING=5:28.4.0-1~ubuntu.24.04~noble $ 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 時,您都需要下載一個新檔案。
在列表中選擇您的 Ubuntu 版本。
前往
pool/stable/並選擇適用的架構 (amd64、armhf、arm64或s390x)。下載 Docker Engine、CLI、containerd 和 Docker Compose 套件的以下
deb檔案containerd.io_<version>_<arch>.debdocker-ce_<version>_<arch>.debdocker-ce-cli_<version>_<arch>.debdocker-buildx-plugin_<version>_<arch>.debdocker-compose-plugin_<version>_<arch>.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>.debDocker 守護程式會自動啟動。
透過執行
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。docker 服務會在基於 Debian 的發行版上自動啟動。在基於 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 的安裝後步驟。