在 RHEL 上安裝 Docker Engine
若要開始在 RHEL 上使用 Docker Engine,請確保您符合先決條件,然後按照安裝步驟進行。
先決條件
作業系統要求
若要安裝 Docker Engine,您需要下列其中一個 RHEL 版本的維護版本
- RHEL 8
- RHEL 9
解除安裝舊版本
在安裝 Docker Engine 之前,您需要解除安裝任何衝突的套件。
您的 Linux 發行版可能提供非官方的 Docker 套件,這些套件可能與 Docker 提供的官方套件衝突。在安裝 Docker Engine 的官方版本之前,您必須解除安裝這些套件。
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc
dnf 可能會報告您尚未安裝這些套件。
儲存在 /var/lib/docker/ 中的映像檔、容器、磁碟區和網路在您解除安裝 Docker 時不會自動移除。
安裝方法
您可以根據您的需求,透過不同的方式安裝 Docker Engine
您可以設定 Docker 的儲存庫並從中安裝,以便於安裝和升級任務。這是建議的方法。
您可以下載 RPM 套件,手動安裝,並完全手動管理升級。這在例如安裝 Docker 於沒有網際網路存取的隔離系統等情況下很有用。
在測試和開發環境中,您可以使用自動化的便捷腳本來安裝 Docker。
Apache 授權條款,版本 2.0。請參閱LICENSE 以獲取完整授權。
使用 rpm 儲存庫安裝
在您首次於新的主機上安裝 Docker Engine 之前,需要設定 Docker 儲存庫。之後,您可以從儲存庫安裝和更新 Docker。
設定儲存庫
安裝 dnf-plugins-core 套件(其提供了管理 DNF 儲存庫的命令)並設定儲存庫。
$ sudo dnf -y install dnf-plugins-core
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
安裝 Docker Engine
安裝 Docker 套件。
若要安裝最新版本,請執行
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin如果系統提示您接受 GPG 金鑰,請驗證指紋是否符合
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果符合,請接受。此命令會安裝 Docker,但不會啟動 Docker。它還會建立一個
docker群組,但預設不會將任何使用者新增到該群組。若要安裝特定版本,請先列出儲存庫中的可用版本
$ dnf list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:28.4.0-1.el9 docker-ce-stable docker-ce.x86_64 3:28.3.3-1.el9 docker-ce-stable <...>回傳的清單取決於啟用的儲存庫,並且特定於您的 RHEL 版本(此範例中以
.el9後綴表示)。請使用其完整的套件名稱來安裝特定版本,該名稱為套件名稱 (
docker-ce) 加上版本字串(第二欄),並以連字號 (-) 分隔。例如,docker-ce-3:28.4.0-1.el9。將
<VERSION_STRING>替換為所需版本,然後執行以下命令以進行安裝$ sudo dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin此命令會安裝 Docker,但不會啟動 Docker。它還會建立一個
docker群組,但預設不會將任何使用者新增到該群組。啟動 Docker Engine。
$ sudo systemctl enable --now docker這會將 Docker systemd 服務設定為在您啟動系統時自動啟動。如果您不希望 Docker 自動啟動,請改用
sudo systemctl start docker。透過執行
hello-world映像檔來驗證安裝是否成功$ sudo docker run hello-world此命令會下載一個測試映像檔並在容器中執行。當容器執行時,它會印出確認訊息並結束。
您已成功安裝並啟動 Docker Engine。
提示嘗試在沒有 root 權限下執行時收到錯誤?
docker使用者群組存在但沒有包含任何使用者,這就是您需要使用sudo執行 Docker 命令的原因。請繼續前往Linux 安裝後步驟,以允許非特權使用者執行 Docker 命令以及進行其他可選的設定步驟。
升級 Docker Engine
若要升級 Docker Engine,請依照安裝說明進行,選擇您要安裝的新版本。
從套件安裝
如果您無法使用 Docker 的 rpm 儲存庫來安裝 Docker Engine,您可以下載發行版的 .rpm 檔案並手動安裝。每次要升級 Docker Engine 時,您都需要下載一個新檔案。
從清單中選擇您的 RHEL 版本。
選擇適用的架構 (
x86_64、aarch64或s390x),然後前往stable/Packages/。下載下列適用於 Docker Engine、CLI、containerd 和 Docker Compose 套件的
rpm檔案containerd.io-<version>.<arch>.rpmdocker-ce-<version>.<arch>.rpmdocker-ce-cli-<version>.<arch>.rpmdocker-buildx-plugin-<version>.<arch>.rpmdocker-compose-plugin-<version>.<arch>.rpm
安裝 Docker Engine,將下列路徑變更為您下載套件的路徑。
$ sudo dnf install ./containerd.io-<version>.<arch>.rpm \ ./docker-ce-<version>.<arch>.rpm \ ./docker-ce-cli-<version>.<arch>.rpm \ ./docker-buildx-plugin-<version>.<arch>.rpm \ ./docker-compose-plugin-<version>.<arch>.rpmDocker 已安裝但尚未啟動。
docker群組已建立,但沒有使用者被新增到該群組。啟動 Docker Engine。
$ sudo systemctl enable --now docker這會將 Docker systemd 服務設定為在您啟動系統時自動啟動。如果您不希望 Docker 自動啟動,請改用
sudo systemctl start docker。透過執行
hello-world映像檔來驗證安裝是否成功$ sudo docker run hello-world此命令會下載一個測試映像檔並在容器中執行。當容器執行時,它會印出確認訊息並結束。
您已成功安裝並啟動 Docker Engine。
提示嘗試在沒有 root 權限下執行時收到錯誤?
docker使用者群組存在但沒有包含任何使用者,這就是您需要使用sudo執行 Docker 命令的原因。請繼續前往Linux 安裝後步驟,以允許非特權使用者執行 Docker 命令以及進行其他可選的設定步驟。
升級 Docker Engine
若要升級 Docker Engine,請下載較新的套件檔案,並重複安裝程序,使用 dnf upgrade 而不是 dnf install,並指向新的檔案。
使用便利指令碼安裝
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 dnf remove 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
您必須手動刪除任何已編輯的設定檔。
下一步
- 繼續前往Linux 的安裝後步驟。