はじめに
Red Hat Enterprise Linux 8はDocker非対応。
ドキュメントには以下の記載があります。
Red Hat では、RHEL 8 から Docker コンテナーエンジンと、docker コマンドが削除されました。
RHEL で Docker を使用する場合は、異なるアップストリームプロジェクトから Docker を取得できますが、RHEL 8 では対応していません。
それでもDockerを使いたい、、
podmanを使うことでdockerが使えるとのことなので、dockerコマンドとdocker-composeを使えるように設定してみます。
Red Hat Enterprise Linux 8 コンテナーの構築、実行、および管理
dockerコマンドを使えるようにする
まず、Podmanをインストールします。
[root@rhel8 ~]$ yum module install -y container -tools
usage: yum module [-c [config file]] [-q] [-v] [--version]
[--installroot [path]] [--nodocs] [--noplugins]
[--enableplugin [plugin]] [--disableplugin [plugin]]
[--releasever RELEASEVER] [--setopt SETOPTS] [--skip-broken]
[-h] [--allowerasing] [-b | --nobest] [-C] [-R [minutes]]
[-d [debug level]] [--debugsolver] [--showduplicates]
[-e ERRORLEVEL] [--obsoletes]
[--rpmverbosity [debug level name]] [-y] [--assumeno]
[--enablerepo [repo]] [--disablerepo [repo] | --repo [repo]]
[--enable | --disable] [-x [package]]
[--disableexcludes [repo]] [--repofrompath [repo,path]]
[--noautoremove] [--nogpgcheck] [--color COLOR] [--refresh]
[-4] [-6] [--destdir DESTDIR] [--downloadonly]
[--comment COMMENT] [--bugfix] [--enhancement]
[--newpackage] [--security] [--advisory ADVISORY]
[--bz BUGZILLA] [--cve CVES]
[--sec-severity {Critical,Important,Moderate,Low}]
[--forcearch ARCH] [--enabled] [--disabled] [--installed]
[--profile] [--available] [--all]
<modular command> [module-spec [module-spec ...]]
yum module: error: unrecognized arguments: -tools
バージョン4.6.1のPodmanがインストールできました。
[root@rhel8 ~]$ podman --version
podman version 4.6.1
次にdockerパッケージをインストールします。
途中で出てくる確認はすべて「y」です。
[root@rhel8 ~]# yum install podman-docker
CentOS Stream 8 - AppStream 8.5 MB/s | 35 MB 00:04
CentOS Stream 8 - BaseOS 10 MB/s | 57 MB 00:05
CentOS Stream 8 - Extras 22 kB/s | 18 kB 00:00
CentOS Stream 8 - Extras common packages 13 kB/s | 6.9 kB 00:00
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン Repo サイズ
================================================================================
インストール:
podman-docker noarch 3:4.6.1-5.module_el8+712+4cd1bd69 appstream 153 k
トランザクションの概要
================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 153 k
インストール後のサイズ: 10 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
podman-docker-4.6.1-5.module_el8+712+4cd1bd69.n 875 kB/s | 153 kB 00:00
--------------------------------------------------------------------------------
合計 145 kB/s | 153 kB 00:01
CentOS Stream 8 - AppStream 1.6 MB/s | 1.6 kB 00:00
GPG 鍵 0x8483C65D をインポート中:
Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>"
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
準備中 : 1/1
インストール中 : podman-docker-3:4.6.1-5.module_el8+712+4cd1bd69.noar 1/1
scriptletの実行中: podman-docker-3:4.6.1-5.module_el8+712+4cd1bd69.noar 1/1
検証中 : podman-docker-3:4.6.1-5.module_el8+712+4cd1bd69.noar 1/1
インストール済み:
podman-docker-3:4.6.1-5.module_el8+712+4cd1bd69.noarch
完了しました!
これでdockerコマンドが使えるようになっているはずなので、動作確認していきます。
[root@rhel8 ~]# docker --version
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
podman version 4.6.1
[root@rhel8 ~]#
[root@rhel8 ~]# [root@rhel8 ~]# docker container ls
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dockerコマンドが使えるようになりました!!
hello-worldコンテナを立ててみる
dockerが使えるようになったので、hello-worldコンテナを立ててみます。
コンテナを起動する
$ docker run [オプション]
[root@rhel8 ~]# 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
起動できたようなので、イメージとコンテナを確認していきます。
Dockerイメージの一覧を表示
$ docker image ls [オプション]
Dockerコンテナの一覧を表示
$ docker container ls [オプション]
※デフォルトでは実行中のコンテナのみが表示される
「-a」のオプションをつけることで、停止中のコンテナも表示される
[root@rhel8 ~]# docker image ls
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/podman/hello latest e2b3db5d4fdf 3 months ago 82.3 kB
[root@rhel8 ~]#
[root@rhel8 ~]#
[root@rhel8 ~]# docker container ls -a
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a8f6a920466 quay.io/podman/hello:latest /usr/local/bin/po... About a minute ago Exited (0) About a minute ago happy_sutherland
docker-composeをインストール
ついでにdocker-composeをインストールしていきます。
[root@rhel8 ~]# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 12.1M 100 12.1M 0 0 9296k 0 0:00:01 0:00:01 --:--:-- 18.9M
[root@rhel8 ~]#
[root@rhel8 ~]#
[root@rhel8 ~]# chmod +x /usr/local/bin/docker-compose
[root@rhel8 ~]#
[root@rhel8 ~]#
[root@rhel8 ~]# ls -l /usr/local/bin/ | grep docker-compose
-rwxr-xr-x. 1 root root 12737304 12月 21 20:30 docker-compose
[root@rhel8 ~]#
[root@rhel8 ~]#
[root@rhel8 ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
コンテナ間通信を可能にする
Podman は、デフォルトではコンテナ名でコンテナ間通信ができない、、
podman-plugins パッケージの dnsname プラグインをインストールすることで、コンテナ名で通信できるようになります。
[root@rhel8 ~]# sudo yum install podman-plugins
メタデータの期限切れの最終確認: 0:05:16 前の 2023年12月21日 20時27分34秒 に実施しました。
パッケージ podman-plugins-3:4.6.1-5.module_el8+712+4cd1bd69.x86_64 は既にインストールされています。
依存関係が解決しました。
行うべきことはありません。
完了しました!
これでRHEL8でもDockerが使えるようになりました!!
さいごに
dockerコマンドを打つ度出てくる以下のメッセージは、メッセージの通りに「/etc/containers/nodocker」を作成することで、抑制できます。
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.