Linux on Power でのコンテナ環境構築
IBM Power サーバー上での Linux(Linux on Power)環境でコンテナを稼働させたい場合、RHEL であれば Podman のパッケージが利用できますし、あるいは OpenShift によるコンテナ基盤の構築も進んでいます。
ただ、以前からの情報も多い docker での利用を試したいこともあるかと思いますので、2023/06 時点で Docker Engine のインストールを試した結果をまとめてみました。
Red Hat Enterprise Linux
RHEL でのインストールについては、docker docs(公式ドキュメント)サイトに記載された手順に従います。RHEL on Power への Docker Engine のインストールは CentOS向け の解説を利用します。
今回は RHEL8 環境にて、パッケージマネジャー(dnf/yum)を利用したインストールを実施します。
1. リポジトリのセットアップ
まず最初に、docker 用のリポジトリをセットアップする必要があります。これを実施しておくことで、このリポジトリから docker のインストールや更新が可能となります。
リポジトリの登録を実施するための yum-config-manager コマンドを含んでいる yum-utils パッケージがまだインストールされていない場合は、先にこれをインストールしておきます。
$ sudo dnf install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
セットアップ後にリポジトリ一覧を確認すると、docker-ce-stable というリポジトリが追加されていることが確認できます。
$ sudo dnf repolist
repo id repo の名前
codeready-builder-for-rhel-8-ppc64le-rpms Red Hat CodeReady Linux Builder for RHEL 8 Power, little endian (RPMs)
docker-ce-stable Docker CE Stable - ppc64le
epel Extra Packages for Enterprise Linux 8 - ppc64le
rhel-8-for-ppc64le-appstream-rpms Red Hat Enterprise Linux 8 for Power, little endian - AppStream (RPMs)
rhel-8-for-ppc64le-baseos-rpms Red Hat Enterprise Linux 8 for Power, little endian - BaseOS (RPMs)
2. Docker Engine のインストール
docker 用のリポジトリをセットアップできたので、そのリポジトリからインストール可能な Docker Engine バージョンの確認もできます。下記がその例です。
sudo dnf list docker-ce --showduplicates | sort -r
docker-ce.ppc64le 3:24.0.2-1.el8 docker-ce-stable
docker-ce.ppc64le 3:24.0.1-1.el8 docker-ce-stable
docker-ce.ppc64le 3:24.0.0-1.el8 docker-ce-stable
docker-ce.ppc64le 3:23.0.6-1.el8 docker-ce-stable
:
docker-ce.ppc64le 3:20.10.10-3.el8 docker-ce-stable
利用したい特定のバージョンがあれば明示的に指定します。ここでは最新のパッケージをインストールする場合の例を記載します。
$ 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」と合致することを確認し、Is this ok [y/N]: に対して y をインプットしてインポートします。
インストールは完了しますが、Docker は自動的には起動していません。また、docker グループが作成されますが、デフォルトではそのグループにはまだどのユーザーも追加していません。次ステップで確認していきます。
3. 稼働確認
まず docker が systemd のサービスとして登録されていることを確認します。この段階ではまだスタートしていません。
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://docs.docker.com
docker をスタートします。
$ sudo systemctl start docker
$ sudo systemctl status docker
$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-06-27 01:58:39 EDT; 40s ago
Docs: https://docs.docker.com
Main PID: 37185 (dockerd)
:
docker コマンドや、実際のコンテナ稼働を確認します。
$ sudo docker version
Client: Docker Engine - Community
Version: v24.0.2
API version: 1.43
Go version: go1.20.4
Git commit: cb74dfc
Built: Fri Jun 9 07:56:59 2023
OS/Arch: linux/ppc64le
Context: default
Server: Docker Engine - Community
Engine:
Version: v24.0.2
API version: 1.43 (minimum version 1.12)
Go version: go1.20.4
Git commit: 659604f
Built: Fri Jun 9 07:55:37 2023
OS/Arch: linux/ppc64le
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4f1af0faa586: Pull complete
Digest: sha256:a13ec89cdf897b3e551bd9f89d499db6ff3a7f44c5b9eb8bca40da20eb4ea1fa
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 5735de2b810b 7 weeks ago 66.4kB
ただしネットワーク環境によっては、上限の Pull 回数を超えている、として Docker Hub からのコンテナイメージの入手がエラーとなることがあります。その場合は、docker login コマンドにより利用可能な docker ユーザー ID でログインを実施しておくことで対応できます。
最後に、OS起動時に自動的にサービスがスタートするように設定しておきます。
$ sudo systemctl enable docker
以上で、docker のインストールと基本セットアップが完了しました。IBM Power 用の特別な設定や手順などは必要ありませんでした。あとは運用体制に合わせて、docker グループへのユーザーの登録などのカストマイズを実施してください。