CentOS8にpodmanをインストールしてみた

2021年6月10日

概要

CentOS Stream release 8にpodmanと言われるコンテナーオーケストレーションツールを入れてみます。

その後、WEBサーバコンテナーを持ってきて、ブラウザから、コンテナーにアクセスできることを確認します。

podman version 3.1.0-devを使用します。(※執筆時:2021年06月10日(木)時点)

手順

podmanのインストール

コンテナーモジュールのインストール

[root@dev ~]# dnf module install container-tools

podmanバージョン確認

[root@dev ~]# podman --version

podman version 3.1.0-dev

Dockerコマンドを使用できるようにする

[root@dev ~]# dnf install podman-docker
→podmanコマンドラインをdockerコマンドに置き換えて実行できるようになります。

複数コンテナー間通信をできるようにする

[root@dev ~]# dnf install podman-plugins

podman-plugins
dnsmasq

ローカルDNSレコードをコンテナーに割り当ててコンテナーの間で通信できます。

podman.socketサービス起動&自動起動有効化

[root@dev ~]# systemctl --now enable podman.socket

podman.socketへのアクセスをその他ユーザでもアクセス可能にする

[root@dev ~]# ls -la /var/run/docker.sock

lrwxrwxrwx 1 root root 23  6月  9 23:14 /var/run/docker.sock -> /run/podman/podman.sock

[root@dev ~]# ls -la /run/podman/podman.sock

srw-rw---- 1 root root 0  6月  9 23:15 /run/podman/podman.sock

[root@dev ~]# chmod 757 /run/podman
[root@dev ~]# chmod 667 /run/podman/podman.sock

[root@dev ~]# systemctl daemon-reload
[root@dev ~]# systemctl restart podman.socket

再起動後、権限が元に戻らないようにする

[root@dev script]# vim podman.socket.permit.sh

#!/usr/bin/env bash
run_podman_permit="$(/usr/bin/stat /run/podman | /usr/bin/grep "Access:" | grep "0757")"
run_podman_podman_socket="$(/usr/bin/stat /run/podman/podman.sock | /usr/bin/grep "Access:" | grep "0667")"

if [ -z "$run_podman_permit" ]; then
    chmod 757 /run/podman
fi

if [ -z "$run_podman_podman_socket" ]; then
    chmod 667 /run/podman/podman.sock
fi

[root@dev ~]# chmod 700 /root/script/podman.socket.permit.sh

[root@dev ~]# diff -u /root/BACKUP_20210610/root <(crontab -l)

・・・
+*/1 * * * * /root/script/podman.socket.permit.sh > /root/script/podman.socket.permit.log 2>&1

コンテナーを実行してみる

WEBサーバコンテナーを実行する

[root@dev ~]# docker run --rm -p 8080:80 -it php:apache bash

root@b784d756b0b2:/var/www/html# apt-get update

・・・
Fetched 8448 kB in 2s (4250 kB/s)
Reading package lists... Done

→aptを最新にする。

root@b784d756b0b2:/var/www/html# apt install vim

Reading package lists... Done
Building dependency tree
Reading state information... Done
・・・

→エディタをインストール。

root@b784d756b0b2:/var/www/html# vim index.html

Hello World Podman

root@b784d756b0b2:/var/www/html# /etc/init.d/apache2 start

[....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.88.0.8. Set the 'ServerName' directive globally to suppress this message
. ok

→WEBサーバサービス開始。

WEBサーバコンテナーにWEBブラウザからアクセスしてみる

http://***.***.***.***:8080/
→GIPまたはLIPの8080番ポートにアクセスし、「Hello World Podman」が表示されることを確認します。

以下、キャプチャ画像のようになっていれば問題ありません。

まとめ

dockerと比較し、podmanはvs codeとの連携ができなかったので、利便性を考えると微妙な感じでした。

今後、もっと親和性が向上していくことを願うばかりです。