在 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

  1. 安裝 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 組,但預設情況下不會將任何使用者新增到該組。

  2. 啟動 Docker Engine。

    $ sudo systemctl enable --now docker
    

    這將配置 Docker systemd 服務在您啟動系統時自動啟動。如果您不希望 Docker 自動啟動,請改用 sudo systemctl start docker

  3. 透過執行 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 時,都需要下載一個新檔案。

  1. 轉到 https://download.docker.com/linux/sles/ 並選擇您的 SLES 版本。然後瀏覽到 s390x/stable/Packages/ 並下載您想要安裝的 Docker 版本的 .rpm 檔案。

  2. 安裝 Docker Engine,將以下路徑更改為您下載 Docker 軟體包的路徑。

    $ sudo zypper install /path/to/package.rpm
    

    Docker 已安裝但未啟動。docker 組已建立,但沒有使用者新增到該組。

  3. 啟動 Docker Engine。

    $ sudo systemctl enable --now docker
    

    這將配置 Docker systemd 服務在您啟動系統時自動啟動。如果您不希望 Docker 自動啟動,請改用 sudo systemctl start docker

  4. 透過執行 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 倉庫中找到它。

在本地執行從網際網路下載的指令碼之前,請務必仔細檢查。安裝前,請熟悉便捷指令碼的潛在風險和限制

  • 該指令碼需要 rootsudo 許可權才能執行。
  • 該指令碼會嘗試檢測您的 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,您需要使用相應的 systemctlservice 命令手動啟動它。正如訊息所示,非 root 使用者預設無法執行 Docker 命令。

以非特權使用者身份使用 Docker,還是以無根模式安裝?

安裝指令碼需要 rootsudo 許可權來安裝和使用 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

  1. 解除安裝 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
    
  2. 主機上的映象、容器、卷或自定義配置檔案不會自動刪除。要刪除所有映象、容器和卷

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    

您必須手動刪除任何已編輯的配置檔案。

後續步驟