Podman の利用方法(Oracle Linux 8)

Tech > 各種技術情報

Oracle Linux 8 の podman の利用方法の説明、dockerとまったく違うので適当にやるとハマります、デーモンがなくルートレスモードとルートフルモードがある、以下の説明はルートフルモードのみです。

個人的な見解ですが、 docker より podman の方が少し使いやすい感じがしました。

インストール

[root@dev8 ~]# dnf install oracle-epel-release-el8
[root@dev8 ~]# dnf module install container-tools:ol8
[root@dev8 ~]# dnf install podman-docker
[root@dev8 ~]# dnf install podman-compose
[root@dev8 ~]# dnf install podman-plugins

イメージを取得

[root@dev8 ~]# podman pull docker.io/library/postgres:10.0

podを作成

podmanは pod 単位でコンテナを管理する(らしい)ので以下の用に作成する

 [root@dev8 ~]# podman pod create --name redmine-pod --network redgitea-network --ip=11.111.0.3 -p 3001:3000
 2b5cc801dc78f017d78d22b062c381f3ee3dhskhdlkasdhkls01546f881e1f843e

–network オプションでpodが所属するネットワークを指定することが可能、作成方法はページ下の方を参照、ディフォルトのネットワークを作成する場合はは省略可能

コンテナの作成

作成したpodにコンテナを追加していく、ホストのストレージをマウントさせる場合は、前もって作成しておいてください、作成するコンテナは適当です

Redmine

podに設定したIPはこのコンテナで利用される(ルールは不明)

[root@dev8 ~]# podman run \
 -d --restart=always --pod=red-pod \
 -e REDMINE_DB_POSTGRES="" \
 -e REDMINE_DB_DATABASE="redmine" \
 -e REDMINE_DB_USERNAME="redmine" \
 -e REDMINE_DB_PASSWORD="redmine" \
 -e TZ="Asia/Tokyo" \
 -v /host/redmine/data/plugins:/usr/src/redmine/plugins \
 -v /host/redmine/data/themes:/usr/src/redmine/public/themes \
 --name=redmine docker.io/library/redmine

PostgreSQL

redmine用のデータベースを作成

[root@dev8 ~]# podman run \
 -d --restart=always --pod=red-pod \
 -e POSTGRES_ROOT_PASSWORD="postgres" \
 -e POSTGRES_USER="redmine" \
 -e POSTGRES_PASSWORD="redmine" \
 -e POSTGRES_DATABASE="redmine" \
 -v /host/redmine/postgresql:/var/lib/postgresql/data \
 --name redmie-db docker.io/library/postgres:10.0

podを確認

   [root@dev8 ~]# podman pod ps
   POD ID        NAME         STATUS      CREATED         INFRA ID      # OF CONTAINERS
   9fac2sdfa50e  redmine-pod  Running     45 minutes ago  be6shjad9ba6  3

コンテナごとの確認

[root@dev8 ~]# podman ps
CONTAINER ID  IMAGE                             COMMAND               CREATED         STATUS             PORTS                   NAMES
be6c12adsdf6  k8s.gcr.io/pause:3.5                                    46 minutes ago  Up 46 minutes ago  0.0.0.0:3001->3000/tcp  9faxxxx8a50e-infra
d6afhhhh112f  docker.io/library/redmine:latest  rails server -b 0...  46 minutes ago  Up 46 minutes ago  0.0.0.0:3001->3000/tcp  red
aad1coooof17  docker.io/library/postgres:10.0   postgres              46 minutes ago  Up 46 minutes ago  0.0.0.0:3001->3000/tcp  red-db

kubernetes用設定ファイル出力

podでまとめて出力できるので便利だとおもう、中身は見ても意味ないので見たい方はご自分でどうぞ

[root@dev8 ~]# podman generate kube redm-pod > red-pod.yml

インポート

未設定の状態から全て設定を復旧

[root@dev8 ~]# podman play kube red-pod.yml

ネットワーク設定の注意点

コンテナ間で通信を行う場合は、dockerと違っているので注意が必要です、コンテナ間通信はディフォルトで podman はできませんでした。dockerのようにコンテナ名での通信はできません(私のやり方がまずいかもしれませんが..)。

コンテナ間通信の為の設定

通信を行いたい pod で同じネットワークを作成します

[root@dev8 ~]# podman network create --subnet 11.111.0.0/24 redgitea-network

確認

[root@dev8 ~]# podman network ls
NETWORK ID    NAME              VERSION     PLUGINS
2f25hhhh93aa  podman            0.4.0       bridge,portmap,firewall,tuning
4bbwwwwwb47e  redgitea-network  0.4.0       bridge,portmap,firewall,tuning,dnsname

設定ファイルは /etc/cni/net.d/redgitea-network.conflist に保存されます

このあと、先ほどのpodの作成のときにIPアドレスを固定化して設定します、次に別のIPを設定するpodを作成します

[root@dev8 ~]# podman pod create --name gitea-pod --network redgitea-network --ip=11.11.0.4 -p 3002:3000

–network redgitea-network オプションで同一のサブネットに閉じ込めます

[root@dev8 ~]# podman run \
 -d --restart=always --pod=gitea-pod \
 -e USER_UID="1000" \
 -e USER_GID="1000" \
 -e DB_TYPE="postgres" \
 -e DB_HOST="db:5432" \
 -e DB_NAME="gitea" \
 -e DB_USER="gitea" \
 -e DB_PASSWD="git" \
 -v /host/gitea/data:/data \
 -v /etc/localtime:/etc/localtime:ro \
 --name gitea gitea/gitea:latest

コンテナ内からのアクセス

例えば、redmineのコンテナへのアクセスは以下のように行います

[gittea] # curl http://11.111.0.3:3000

基本的操作

podごとにまとめて操作できるためdockerより手間がないかもしれません

起動

[root@dev8 ~]# podman pod start red-pod

停止

[root@dev8 ~]# podman pod stop red-pod

削除

[root@dev8 ~]# podman pod rm red-pod

docker-composeとの違い

基本的にコンテナは作成されますが、 networks セクションなどの一部の設定が効いていないようです(間違っていたらすいません)、単純に持ってきてその塊だけでホストするなら問題ないと思いますが、コンテナ間で通信したりする場合は、注意が必要です。

Posted on 2021-12-28 17:43:43

はじめまして

お茶の国静岡で、焼酎のお茶割なんか罰当たりで飲んだことはありません、常に一番搾りを嗜む静岡極東のBBQerです、最近まわりのエンジニアの方々がお料理を上手にやっている姿を恨めしそうに横目に見ながら、軟骨ピリ辛チクワを食べています、みなさんよろしく。

Posted

Amazon

tags

家系 日本酒池 広井酒店 やがら やっぱた 刺身 丸干し 鯵 東京マラソン fpm php82 servant thread spawn Rust Oracle Linux 8 microcode firmware linux openzfs zfs gitea 麒麟 真野鶴 金鶴 日本酒 docker oracle pod podman cli virtualbox VirtualBox epub mobi calibre mask lens ワンライナー php 海 redmine Linux Oracle Map OMap omap map 夏 BBQ カテゴリ管理 カテゴリ timestamp date oracle database string 麦焼酎 ダービー process 磨き蒸留 広井酒店、日本酒 芋焼酎 酒 焼酎 ゆるキャン 広井酒店、日本酒池 spring framework java persistent spring session session spring hdbc-odbc persistent-odbc odbc day utctime スィート レマンの森 elm初期化 elm バイク xlr80 esqueleto database xl2tpd strongswan vpn l2tp ipsec 正月 ゲーム grub nginx systemctl portage 豚骨 圧力鍋 yesod-auth-hashdb yesod-auth