先日、Docker互換のコンテナーを目指したプロジェクトがPodmanの1.0.0をリリースし、IT系のニュースなどにも取り上げられていました。
そのPodmanをCentOS 7.6で使ってみました。
インストール方法
RHEL 7.6以降やCentOS 7.6などでインストールできるPodmanは厳密に言うとバージョン0.11.1.1であり、バージョン1.0.0ではありません。ただ基本的には同じように利用できます。次のようにセットアップすると利用できます。ちなみに1.0.0をどうしても触りたい場合は現在だとFedora 29で利用できるようです。インストール方法や利用方法も同様です。
# yum update # yum install podman
もしyum update
でカーネルの更新があった場合は一度再起動して新しいカーネルで起動してからpodmanをインストールしてください。はい、それだけです。Dockerのように、サービスの起動は必要ありません。
コマンド体系
PodmanのコマンドはDocker 1.13くらいの時と同じような旧形式のコマンド体系になっています。 例えばいくつか抜き出すとこんな感じです。公式サイトの最初に書かれているようにほぼDockerのエイリアスといってもいい感じです。
実行すること | Docker | Podman |
---|---|---|
イメージ検索 | docker search | podman search |
イメージの取込み | docker pull | podman pull |
イメージの作成 | docker build | podman build |
イメージの削除 | docker rmi | podman rmi |
コンテナーの起動 | docker run | podman run |
コンテナーの確認 | docker ps | podman ps |
コンテナーの停止 | docker stop | podman stop |
コンテナーの削除 | docker rm | podman rm |
コマンド全てについてはman podman
やpodman --help
で確認してください。
ちなみにコンテナーイメージの参照先は/etc/containers/registries.conf
に設定されています。
Podmanでコンテナーを触ってみる
Dockerと遜色なく利用できました。オプションもDockerとほぼ一緒です。
# podman run --name cont1 -p 50080:80 -itd nginx:alpine # podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dee8cd5fdeee docker.io/library/nginx:alpine nginx -g daemon o... 15 seconds ago Up 15 seconds ago 0.0.0.0:50080->80/tcp cont1 # ss -antu|grep 50080 tcp LISTEN 0 128 *:50080 *:* # curl http://localhost:50080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> ... # podman stop cont1 dee8cd5fdeeea1d13aee2b73a2b8e23ec356913aaa75d21fba210b663dae89d3 # podman rm cont1 dee8cd5fdeeea1d13aee2b73a2b8e23ec356913aaa75d21fba210b663dae89d3
Podman buildしてみる
ここで公開しているイメージと同じ内容のDockerfileを使って、ビルドしてみました。
Dockerfileの内容
FROM scratch ADD ubuntu-18.04-minimal-cloudimg-amd64-root.tar.xz / RUN apt-get update && apt-get install -y busybox && busybox --install && apt-get -y autoremove && apt-get clean WORKDIR /root CMD ["bash"]
root.tar.xzイメージはこちらからダウンロードできるものを使っています。
実行したコマンド
# podman build --compress -t ytooyama/myubuntu:latest -f Dockerfile .
どちらもdocker
コマンドをpodman
コマンドに置き換えただけです。同じようにイメージを生成することができました。ここで公開しているイメージについての話は次回にします。
Docker vs Podman
正直いって、docker
コマンドをつかってやっていた範疇のことはPodmanでも可能のように見えました。一方、Docker社が提供するソフトウェアはDocker Engineだけではなく、Docker ComposeとかDocker SwarmとかDocker Machineとか色々あります。
PodmanはDockerのようにデーモンが不要な点からより安全性が高い点、Dockerはコンテナーエンジン以外にもたくさん便利なものが揃っている点が優れていると思います。やりたいことに合わせて選択すればいいんじゃないかなと思います。CentOSやFedoraなどのフリーのソフトウェアを使う範疇ならばの話です。RHEL 8ではこのままいけばPodmanだけが提供されるのではないかなと思います。