在 SLES (s390x) 上安裝 Docker Engine
注意此頁面上的安裝說明適用於 SLES on the s390x 架構 (IBM Z) 的軟體包。其他架構,包括 x86_64,不支援 SLES。
要在 SLES 上開始使用 Docker Engine,請確保您滿足先決條件,然後按照安裝步驟進行操作。
先決條件
作業系統要求
要安裝 Docker Engine,您需要以下 SLES 版本中一個受支援的版本:
- SLES 15-SP4 on s390x (IBM Z)
- SLES 15-SP5 on s390x (IBM Z)
您必須啟用 SCC SUSE
倉庫。
您必須新增 OpenSUSE SELinux
倉庫。此倉庫預設未新增。執行以下命令新增它:
$ opensuse_repo="https://download.opensuse.org/repositories/security:/SELinux/openSUSE_Factory/security:SELinux.repo"
$ sudo zypper addrepo $opensuse_repo
解除安裝舊版本
在安裝 Docker Engine 之前,您需要解除安裝任何衝突的軟體包。
您的 Linux 發行版可能提供非官方的 Docker 軟體包,這些軟體包可能與 Docker 提供的官方軟體包衝突。在安裝官方版本的 Docker Engine 之前,您必須解除安裝這些軟體包。
$ sudo zypper remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
runc
zypper
可能會報告您沒有安裝這些軟體包中的任何一個。
解除安裝 Docker 時,儲存在 /var/lib/docker/
中的映象、容器、卷和網路不會自動刪除。
安裝方法
您可以根據需要,透過不同方式安裝 Docker Engine
您可以設定 Docker 的倉庫並從中安裝,以簡化安裝和升級任務。這是推薦的方法。
您可以下載 RPM 軟體包,手動安裝它,並完全手動管理升級。這在諸如在無法訪問網際網路的氣隙系統上安裝 Docker 等情況下非常有用。
在測試和開發環境中,您可以使用自動化的便捷指令碼來安裝 Docker。
Apache 許可證,版本 2.0。有關完整許可證,請參閱 LICENSE。
使用 rpm 倉庫安裝
在新主機上首次安裝 Docker Engine 之前,您需要設定 Docker 倉庫。之後,您可以從倉庫安裝和更新 Docker。
設定倉庫
設定倉庫。
$ sudo zypper addrepo https://download.docker.com/linux/sles/docker-ce.repo
安裝 Docker Engine
安裝 Docker 軟體包。
要安裝最新版本,請執行
$ sudo zypper 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
組,但預設情況下不會將任何使用者新增到該組。要安裝特定版本,首先列出倉庫中的可用版本
$ sudo zypper search -s --match-exact docker-ce | sort -r v | docker-ce | package | 3:28.4.0-1 | s390x | Docker CE Stable - s390x v | docker-ce | package | 3:28.3.3-1 | s390x | Docker CE Stable - s390x
返回的列表取決於啟用的倉庫,並且特定於您的 SLES 版本。
透過其完全限定的軟體包名稱來安裝特定版本,即軟體包名稱 (
docker-ce
) 加上版本字串(第 2 列),由連字元 (-
) 分隔。例如,docker-ce-3:28.4.0
。將
<VERSION_STRING>
替換為所需的版本,然後執行以下命令進行安裝$ sudo zypper 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/sles/ 並選擇您的 SLES 版本。然後瀏覽到
s390x/stable/Packages/
並下載您想要安裝的 Docker 版本的.rpm
檔案。安裝 Docker Engine,將以下路徑更改為您下載 Docker 軟體包的路徑。
$ sudo zypper 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,下載較新的軟體包檔案並重復從軟體包安裝的步驟,使用 zypper -y upgrade
而不是 zypper -y 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 zypper 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 的安裝後步驟。