Docker 代替ツール podman を試してみた。
こんにちは k-jun です。今回は、Docker のような Container ツール podman を試してみようと思います。
https://github.com/containers/podman
Docker はかなり硬い地位を気づいているので、Container ツールとしての覇権は譲らないと思いこんでいました。が、podman もそれなりに名前を聞くようになってきたのでびっくりです。 どうでもいいですが、Kubernetes の Pod とはあまり関係がないらしいですね。
Setup
インストールはここに従います。インストール後には、podman machine init で podman の API を起動させていきます。
$ brew install podman $ podman machine init $ podman machine start INFO[0000] waiting for clients... INFO[0000] listening tcp://0.0.0.0:7777 INFO[0000] new connection from to /var/folders/3b/7chj8jgx5z5g0cdh0szfv1b40000gn/T/podman/qemu_podman-machine-default.sock Waiting for VM ...
$ podman info | head host: arch: amd64 buildahVersion: 1.23.1 cgroupControllers: [] cgroupManager: systemd cgroupVersion: v2 conmon: package: conmon-2.0.30-2.fc34.x86_64 path: /usr/bin/conmon version: 'conmon version 2.0.30, commit: '
良さそうですね。
Run
getting-startedに従っていきます。search コマンドで nginx の image を検索した後に、pull してみます。
$ podman search nginx | head INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/library/nginx Official build of Nginx. 15727 [OK] docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker con... 2088 [OK] docker.io docker.io/nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 54 docker.io docker.io/nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo... 55 docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of... 818 [OK] docker.io docker.io/privatebin/nginx-fpm-alpine PrivateBin running on an Nginx, php-fpm & Al... 59 [OK] docker.io docker.io/nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and NGIN... 21 docker.io docker.io/nginxdemos/hello NGINX webserver that serves a simple page co... 76 [OK] docker.io docker.io/mailu/nginx Mailu nginx frontend 9 [OK] $ podman pull nginx Resolving "nginx" using unqualified-search registries (/etc/containers/registries.conf.d/999-podman-machine.conf) Trying to pull docker.io/library/nginx:latest... $ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest 87a94228f133 2 weeks ago 138 MB
Docker と互換性があるはずなので、images も打ってみましたが大丈夫そうですね ! いよいよ起動させていきます。
$ podman run -dt -p 8080:80/tcp nignx $ curl -s http://localhost:8080 | head <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head>
実際に、起動していますね ! ということで、Docker コマンドのような扱いはできそうです。
Diff
見かけ上は Docker と podman はほとんど変わっていないように見えていますが、内部的には結構違うようです。
https://www.redhat.com/ja/blog/working-linux-containers-rhel-8-podman-image-builder-and-web-console
Podman was released with Red Hat Enterprise Linux 7.6 and 8.0 as the next generation of Linux container tools, is designed to allow faster experimentation and development of features.
Red Hat の v7.6 あたりで新しい container tool として開発されたようですね。OCI と呼ばれる Docker とは違った仕様に従っているようです。 内部的な仕様などかなり詳細に説明してくれていますが、ここでは Docker とは異なった別の仕組みで動いている。程度にとどめておきます。
Docker コマンドはそのまま podman に置き換えても動きそうなので、自由に変更できるプロダクトなどでは使ってみようと思います。 docker-compose も podman に plugin を導入することで扱えるようになるようですね! 面白そうです! それでは今日はこのへんで。