ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

PodmanをCentOS 7.6で使ってみた

先日、Docker互換のコンテナーを目指したプロジェクトがPodmanの1.0.0をリリースし、IT系のニュースなどにも取り上げられていました。

podman.io

その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 podmanpodman --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だけが提供されるのではないかなと思います。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。