在 CentOS 上安裝 Docker Engine
要在 CentOS 上開始使用 Docker Engine,請確保您滿足先決條件,然後按照安裝步驟進行操作。
先決條件
作業系統要求
要安裝 Docker Engine,您需要以下 CentOS 版本之一的受支援版本:
- CentOS 9 (stream)
centos-extras
倉庫必須啟用。該倉庫預設是啟用的。如果您停用了它,您需要重新啟用它。
解除安裝舊版本
在安裝 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
dnf
可能會報告您沒有安裝這些軟體包。
解除安裝 Docker 時,儲存在 /var/lib/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/centos/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 <...>
返回的列表取決於啟用了哪些倉庫,並且特定於您的 CentOS 版本(在此示例中由
.el9
字尾表示)。透過其完全限定的包名稱安裝特定版本,即包名稱 (
docker-ce
) 加上版本字串(第2列),用連字元 (-
) 分隔。例如,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 時,都需要下載一個新檔案。
前往 https://download.docker.com/linux/centos/ 並選擇您的 CentOS 版本。然後瀏覽至
x86_64/stable/Packages/
並下載您想安裝的 Docker 版本的.rpm
檔案。安裝 Docker Engine,將以下路徑更改為您下載 Docker 軟體包的路徑。
$ sudo dnf install /path/to/package.rpm
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,請下載新的軟體包檔案,並重復安裝過程,使用 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。在基於 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 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 的安裝後步驟。