Podman - oomichi/try-kubernetes GitHub Wiki
背景
プロジェクトの初期段階にシングルノードでの開発・テスト・PoCを行い、その後スケーラビリティ確保のためにKubernetesへ移行する、というシナリオが多くあった。 このシングルノードでのアプリデプロイを行うため、docker-compose、もしくはシングルノードのKubernetesクラスタを構築するのが多かったが、Podmanを使えばKubernetes的なアプリデプロイを軽量に行うことができるため、Kubernetesを知っている人には学習コストが低く、またKubernetesへの移行も容易なのではないかと考えた。 そこでここではKubernetes移行を前提にしつつ、podmanについて整理したいと思う。
Podman概要
Red Hatが中心となって開発している。 しかし、Red HatだけでなくUbuntuでもパッケージ提供されているため、幅広く使われている。 dockerdのようなデーモンはなく、podmanコマンド実行で全ての処理が行われる。
Podman実行
podman run コマンド実行
$ podman run -dt python
Resolved "python" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull docker.io/library/python:latest...
Getting image source signatures
Copying blob 7c45daddd450 done
Copying blob f9a1922eee8a done
Copying blob 0a9573503463 done
Copying blob 7c632e57ea62 done
Copying blob 1ccc26d841b4 done
Copying blob 800d84653581 done
Copying blob 0952bd8ba4ec done
Copying blob f0f1ba982665 done
Copying config 3c055746a2 done
Writing manifest to image destination
Storing signatures
55c9a36ebd4490ae45128a78b5e1451e62f5ec5c455f76527ab31d6e2c95600d
$
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55c9a36ebd44 docker.io/library/python:latest python3 8 seconds ago Up 8 seconds ago laughing_kowalevski
$
コンテナのストップ
$ podman stop 55c9a36ebd44
55c9a36ebd44
$
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
1cdfa20f0dbc k8s.gcr.io/pause:3.5 4 days ago Created
0.0.0.0:8080->8443/tcp 4058843aef63-infra
42e4f2549bf2 quay.io/centos7/httpd-24-centos7:latest /usr/bin/run-http... 4 days ago Created
0.0.0.0:8080->8443/tcp httpd_in_pod
55c9a36ebd44 docker.io/library/python:latest python3 18 minutes ago Exited (137) 48 seconds ago laughing_kowalevski
$
マニフェストの書き方
$ cat podman-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-podman
spec:
containers:
- name: nginx
image: docker.io/library/nginx:1.25.2
ports:
- containerPort: 80
restartPolicy: Never
$
マニフェストを使ったPodのデプロイ
$ podman play kube podman-nginx.yaml
Trying to pull docker.io/library/nginx:1.25.2...
Getting image source signatures
Copying blob 4dfff0708538 done
Copying blob 2135e49ace4b done
Copying blob 6f35ab6f1400 done
Copying blob a378f10b3218 done
Copying blob 6c538b49fa4a done
Copying blob c843f6b280ce done
Copying blob d57731fb9008 done
Copying config bc649bab30 done
Writing manifest to image destination
Storing signatures
Pod:
b7c82351bcb9565be1ffd5c759ee804ceec796567db33be76f1d832816775419
Container:
64eed0519d992c956523b51ccd707228d73350bfe1f577edd59459c30805e04d
$
Podの削除
$ podman play kube --down podman-nginx.yaml
Pods stopped:
b7c82351bcb9565be1ffd5c759ee804ceec796567db33be76f1d832816775419
Pods removed:
b7c82351bcb9565be1ffd5c759ee804ceec796567db33be76f1d832816775419
Podの確認
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
135b2c790ddb nginx-podman Running About a minute ago 7e3553441f26 2
$
Podの削除 其2
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
135b2c790ddb nginx-podman Running 10 minutes ago 7e3553441f26 2
4058843aef63 pod-sample Created 4 days ago 1cdfa20f0dbc 2
$
$ podman pod rm pod-sample
4058843aef63a7da4cc87ee7ebbe0b920f1615ad886b356610f1ff17157443c1
$
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
135b2c790ddb nginx-podman Running 10 minutes ago 7e3553441f26 2
$