dnf または yum コマンドでインストールします。
# dnf -y install podman
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 コマンドが podman コマンドに変わった程度でオプション引数はほぼ同様です。当初は network や rename コマンドがサポートされていませんでしたが、現時点ではサポートされているようです。
$ podman run -d -it --name test -p 80:80 httpd
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のリポジトリ」を参照してください。
Docker では ~/.docker/config.json に detach-keys を記述することでコンテナ内でも Ctrl-p によるヒストリを利用できていましたが、Podman では効かないようです。podman exec や podman attach コマンドに引数を指定することで対応可能です。
$ podman exec -it --detach-keys ctrl-\\ mycontainer /bin/bash
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