Podman

トップ > Docker > Podman

目次

Podmanとは

インストール

dnf または yum コマンドでインストールします。

# dnf -y install podman

Dockerコマンド

podman-docker パッケージをインストールすれば podman コマンドの代わりに docker コマンドも利用できるようになります。

# dnf -y install podman-docker

本家の docker コマンドではないことを示す警告がでますが、/etc/containers/nodocker ファイルを作成すると抑制されます。

# docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
  :
# touch /etc/containers/nodocker

Dockerとの差異

docker コマンドが podman コマンドに変わった程度でオプション引数はほぼ同様です。当初は network や rename コマンドがサポートされていませんでしたが、現時点ではサポートされているようです。

$ podman run -d -it --name test -p 80:80 httpd

CentOS/Rocky Linux/AlmaLinuxコンテナ

CentOS 8(すでにEOLを迎えていますが)、Rocky Linux 8、AlamaLinux 8 コンテナは下記で起動できます。

$ podman run -d -it --name centos8 centos:8
$ podman run -d -it --name rocky8 rockylinux/rockylinux:8
$ podman run -d -it --name alma8 almalinux/almalinux:8

CentOS 8はすでにEOLを迎えているため、コンテナ内でパッケージをインストールするには「CentOS 8のリポジトリ」を参照してください。

detach-keys

Docker では ~/.docker/config.json に detach-keys を記述することでコンテナ内でも Ctrl-p によるヒストリを利用できていましたが、Podman では効かないようです。podman exec や podman attach コマンドに引数を指定することで対応可能です。

$ podman exec -it --detach-keys ctrl-\\ mycontainer /bin/bash

Pod

Pod は例えば、Webサーバ+DBサーバ+Memcacheサーバ といった一連のコンテナグループを管理します。Pod がホストとのポートバインドを管理し、Pod 内のコンテナ群は互いに 127.0.0.1 と ポート番号で通信します。下記は my-pod という名前の Pod を作成し、その中に my-db と my-web コンテナを作成し、互いは 127.0.0.1 + ポート番号で通信し、ホストには 80 番ポートをバインドする例です。Pod を作成すると管理用のコンテナ *.infra がひとつ作成されます。

$ podman pod create -p 80:80 -n my-pod
$ podman run -d --pod my-pod --name my-db -e MARIADB_ROOT_PASSWORD=root123 mariadb
$ podman run -d -it --name my-web --pod my-pod almalinux/almalinux
$ podman exec -it my-web /bin/bash
# dnf -y install mariadb httpd
# mysql -h 127.0.0.1 -u root -proot123
MariaDB [(none)]> quit
# sed -i 's/#ServerName.*/ServerName www.example.com/' /etc/httpd/conf/httpd.conf
# /usr/sbin/httpd -DFORGROUND
# exit
$ curl http://localhost

Copyright (C) 2022 杜甫々
初版:2022年3月27日 最終更新:2022年3月27日
http://www.tohoho-web.com/docker/podman.html