前書き
RHEL9にDocker(podman)をセットアップする時のメモです。
環境確認
OSを確認:RHEL9 64bit
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 9.3 (Plow)
$ arch
x86_64
Docker(podman)をインストール
Red Hat では、RHEL 9 から Docker コンテナーエンジンと、docker コマンドが削除されました。
RHEL で Docker を使用する場合は、異なるアップストリームプロジェクトから Docker を取得できますが、RHEL 9 では対応していません。
Dockerの変わりに、podman-docker パッケージをインストールできます。docker コマンドを実行するたびに、実際には podman コマンドが実行されます。
ちなみに、podman以外、Red Hat は一連のコマンドラインツールを提供します。これには、以下が含まれます。
-
Podman - Pod およびコンテナーイメージの直接管理 (run、stop、start、ps、attach、exec など)
-
buildah - コンテナーイメージの構築、プッシュ、および署名
-
skopeo - イメージのコピー、検証、削除、および署名
-
runc - podman および buildah へのコンテナーの実行機能と構築機能の提供
-
crun - ルートレスコンテナーの柔軟性、制御、セキュリティーを向上するために設定可能なオプションのランタイム。
-
dockerをインストールする
$ sudo yum install docker -y
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:15:09 前の 2024年01月28日 15時59分26秒 に実施しました。
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
podman-docker noarch 2:4.6.1-7.el9_3 rhel-9-for-x86_64-appstream-rpms 106 k
トランザクションの概要
================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 106 k
インストール後のサイズ: 10 k
パッケージのダウンロード:
podman-docker-4.6.1-7.el9_3.noarch.rpm 131 kB/s | 106 kB 00:00
--------------------------------------------------------------------------------
合計 131 kB/s | 106 kB 00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
インストール中 : podman-docker-2:4.6.1-7.el9_3.noarch 1/1
scriptletの実行中: podman-docker-2:4.6.1-7.el9_3.noarch 1/1
検証 : podman-docker-2:4.6.1-7.el9_3.noarch 1/1
インストール済みの製品が更新されています。
インストール済み:
podman-docker-2:4.6.1-7.el9_3.noarch
完了しました!
dockerをインストールしようとしているが、podman-dockerがインストールされた。
- podmanのバージョンを確認
$ podman -v
podman version 4.6.1
- buildahのバージョンを確認
$ buildah -v
buildah version 1.31.3 (image-spec 1.1.0-rc.3, runtime-spec 1.1.0-rc.3)
- skopeoのバージョンを確認
$ skopeo -v
skopeo version 1.13.3
- runcのバージョンを確認
$ runc -v
runc version 1.1.9
spec: 1.0.2-dev
go: go1.20.10
libseccomp: 2.5.2
- crunのバージョンを確認
$ crun -v
crun version 1.8.7
commit: 45a1234ce12d1ee123456bdcc56789a1fa1234c4
rundir: /run/user/1000/crun
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +YAJL
- dockerを実行してみる、実際にpodmanが実行される。
$ sudo docker run hello-world
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Resolved "hello-world" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull quay.io/podman/hello:latest...
Getting image source signatures
Copying blob d08b40be6878 done
Copying config e2b3db5d4f done
Writing manifest to image destination
!... Hello Podman World ...!
.--"--.
/ - - \
/ (O) (O) \
~~~| -=(,Y,)=- |
.---. /` \ |~~
~/ o o \~~~~.----. ~~
| =(X)= |~ / (O (O) \
~~~~~~~ ~| =(Y_)=- |
~~~~ ~~~| U |~~
Project: https://github.com/containers/podman
Website: https://podman.io
Documents: https://docs.podman.io
Twitter: @Podman_io
- ローカルストレージ内のイメージをリスト表示します。
# buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/podman/hello latest e2b3db5d4fdf 5 months ago 82.3 KB
- quay.io/podman/hello イメージをもとに、新しい作業コンテナーを作成します。
# buildah from quay.io/podman/hello
hello-working-container
- コンテナーおよびそれらのベースイメージをリスト表示します。
# buildah containers
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
fa8c29f1d821 * e2b3db5d4fdf quay.io/podman/hello:latest hello-working-container
- イメージに基づいてコンテナーを実行します。
# podman run --name=hello quay.io/podman/hello
!... Hello Podman World ...!
.--"--.
/ - - \
/ (O) (O) \
~~~| -=(,Y,)=- |
.---. /` \ |~~
~/ o o \~~~~.----. ~~
| =(X)= |~ / (O (O) \
~~~~~~~ ~| =(Y_)=- |
~~~~ ~~~| U |~~
Project: https://github.com/containers/podman
Website: https://podman.io
Documents: https://docs.podman.io
Twitter: @Podman_io
DockerFileからDockerを作成する
- 今回使うソース(Spring boot + Mavenのプロジェクト):
- Dockerfileの中身
FROM eclipse-temurin:17-jdk-jammy
EXPOSE 8000
ADD ./target/jenkins_demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
- Dockerfileを使ってdockerイメージをビルドする(jenkins_demoのフォルダーで実行する)
[root@localhost jenkins_demo]# docker build -t jenkins_demo -f Dockerfile .
- Dockerイメージのリストを確認
# buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/jenkins_demo latest d92185b1bbe5 15 minutes ago 434 MB
- Dockerイメージを実行する
# docker run --rm -p8000:8000 jenkins_demo
WEBブラウザでURL:
http://localhost:8000/
を叩いて、コンテナー実行成功したことを確認出来ました。