podmanで遊び始めたので、
備忘録も兼ねて基本的なコマンドを書いておきます。
実行環境のOSはRed Hat Enterprise Linux 8.0です。
なお詳細な内容はRed Hat社の公式マニュアルをご参照ください。
podman触るなら公式マニュアル読むのが最良の選択だと思います。
前回の投稿記事は以下から読めます。
podmanの覚書01(インストール、イメージ取得/情報取得まで)
ではサクッと書いていきます。
###イメージにタグをつけて管理する
イメージのリポジトリ名やタグ変更することで、イメージの内容を管理しやすくなります。基本的にpodman tag
コマンドを使用して、複数のパーツから構成されるイメージにエイリアスを追加して設定を変更していきます。
パーツは以下で構成されています。
registryhost/username/NAME:tag
NAMEだけを追加する場合は以下のコマンドを実行します。
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.redhat.io/ubi8/ubi-init latest 8c376a94293d 2 months ago 231 MB
# podman tag 8c376a94293d rhel8init
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.redhat.io/ubi8/ubi-init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init latest 8c376a94293d 2 months ago 231 MB
上記のようにNAME部分だけを指定してREPOSITORY名の設定を変更できますが、tagを明記せずに省略するとlatestが自動でタグ付けされるのでご注意ください。
任意のタグをつけたい場合は以下のコマンドを実行します。
# podman tag 8c376a94293d rhel8init:8.0
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.redhat.io/ubi8/ubi-init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
NAMEの先頭にユーザ名やレジストリも追加できます。ユーザ名を追加する例は以下の通りです。
# podman tag 8c376a94293d hobo0222/rhel8init:8.0
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/hobo0222/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
registry.redhat.io/ubi8/ubi-init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
###イメージを保存する
作成したコンテナイメージを保存する場合は、podman save
コマンドを実行します。
# podman save -o rhel8init.tar localhost/hobo0222/rhel8init:8.0
Getting image source signatures
Copying blob 24d85c895b6b: 205.76 MiB / 205.76 MiB [========================] 9s
Copying blob c613b100be16: 20.00 KiB / 20.00 KiB [==========================] 9s
Copying blob 188ab351dfda: 14.62 MiB / 14.62 MiB [==========================] 9s
Copying config 8c376a94293d: 4.77 KiB / 4.77 KiB [==========================] 0s
Writing manifest to image destination
Storing signatures
# ls -l | grep rhel8init
-rw-r--r--. 1 root root 231128576 7月 6 07:13 rhel8init.tar
完了するとイメージがtarファイルで保存されます。このtarファイルをpodmanが利用できる別サーバへ転送してインポートを行うと、別環境でも再利用できるようになります。インポートのコマンドは以下の通りです。
[root@rhel8s01 ~]# scp /root/rhel8init.tar root@192.168.0.48:/root/
root@192.168.0.48's password:
rhel8init.tar 100% 220MB 55.1MB/s 00:04
rootで転送しているところは検証環境なのでお許しください。
# ls -l | grep rhel8init
-rw-r--r--. 1 root root 231128576 7月 6 07:16 rhel8init.tar
# podman images
# podman import -m "Test Podman Container." rhel8init.tar new-image:latest
Getting image source signatures
Copying blob 8d4afee43c3a: 220.42 MiB / 220.42 MiB [========================] 7s
Copying config d146106c6c84: 420 B / 420 B [================================] 0s
Writing manifest to image destination
Storing signatures
d146106c6c8472ec7d1d762b307b57d09a9601d086daa89cbbaf349aa194a883
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/new-image latest d146106c6c84 39 minutes ago 231 MB
# podman tag d146106c6c84 localhost/hobo0222/rhel8init:8.0
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/new-image latest d146106c6c84 39 minutes ago 231 MB
localhost/hobo0222/rhel8init 8.0 d146106c6c84 39 minutes ago 231 MB
# podman load < rhel8init.tar
Getting image source signatures
Copying blob 24d85c895b6b: 205.76 MiB / 205.76 MiB [========================] 7s
Copying blob c613b100be16: 20.00 KiB / 20.00 KiB [==========================] 7s
Copying blob 188ab351dfda: 14.62 MiB / 14.62 MiB [==========================] 7s
Copying config 8c376a94293d: 4.77 KiB / 4.77 KiB [==========================] 0s
Writing manifest to image destination
Storing signatures
Loaded image(s): localhost/hobo0222/rhel8init:8.0
これで別サーバでも作成したコンテナを操作できるようになります。
# podman run --rm -it localhost/hobo0222/rhel8init:8.0 bash
bash-4.4# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.0 (Ootpa)
このあたりの記述が公式マニュアルにはpodman import
コマンドでインポートまでしか書いてくれていないので、podman load
コマンドなどやpodman tag
コマンドの操作は色々調べて我流でやってみたので効率悪そうです。もっとスマートなやり方でコンテナ起動まで進める手順があれば、ぜひ教えて頂きたいです...。
podman import
コマンド実行時にregistryhost/username/NAME:tag
のどれかで指定していない分はどうやらデフォルト設定が入るようになってるようなのですが、このデフォルトの変え方をやるのかがいま知りたいですね。おそらく/etc/containerディレクトリのどこかで設定できるのでは?と思うのですが...。
###イメージを削除する
不要になったイメージはpodman rmi
コマンドで削除できます。イメージが実行されているコンテナは削除できませんので、削除前にpodman stop
コマンドで停止させてから実行してください。
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/new-image latest d146106c6c84 About an hour ago 231 MB
localhost/hobo0222/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
# podman rmi docker.io/library/new-image
d146106c6c8472ec7d1d762b307b57d09a9601d086daa89cbbaf349aa194a883
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/hobo0222/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
イメージをスペースで区切れば複数のイメージを一括で削除できます。
# podman rmi registry.redhat.io/ubi8/ubi-init registry.redhat.io/ubi8/minimal
全てのイメージを削除したい場合は以下のコマンドを使用します。
# podman rmi $(podman images -a -q)
# podman images
複数のタグが関連づけられたイメージを削除する際はオプションにforceをつけてください。
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/johndoe/webserver latest 76deb4bffebc 3 days ago 241 MB
registry.access.redhat.com/ubi8/ubi latest 1a2a4fce0369 8 days ago 216 MB
registry.redhat.io/ubi8/ubi latest 1a2a4fce0369 8 days ago 216 MB
localhost/nextcloud latest f431c65ac572 11 days ago 684 MB
docker.io/library/nextcloud latest f431c65ac572 11 days ago 684 MB
registry.redhat.io/ubi8/ruby-25 latest 866ca9cf4510 2 weeks ago 663 MB
docker.io/library/wordpress latest 5e5e0b1aa9dd 2 weeks ago 458 MB
registry.redhat.io/rhel8/rsyslog latest 93a2f50b3eb0 3 weeks ago 235 MB
docker.io/library/redmine latest 3be74ba3cc8c 3 weeks ago 599 MB
docker.io/library/bash latest 417531d957ab 7 weeks ago 17.5 MB
localhost/hobo0222/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
registry.redhat.io/ubi8/ubi-init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init latest 8c376a94293d 2 months ago 231 MB
localhost/rhel8init 8.0 8c376a94293d 2 months ago 231 MB
registry.redhat.io/ubi8/ubi-minimal latest 3bfa511b67f8 2 months ago 91.7 MB
registry.fedoraproject.org/f27/httpd latest 18f01f6f77ef 11 months ago 426 MB
quay.io/appuio/oso-centos7-zabbix-server latest cd45ed6b9e52 19 months ago 586 MB
docker.io/library/rails latest 660f41442a27 2 years ago 865 MB
# podman rmi $(podman images -a -q)
76deb4bffebcf26758763f5dbeb61b26f024e6613833af4c9359579c9303278b
unable to delete 1a2a4fce03697e74648ba88fcf548b8fa7f1e27a9c6aaf7b2f319efae51e75b5 (must force) - image is referred to in multiple tags
866ca9cf4510d1853b373618208c6c68986498c1895d6891f62519e5377d7d07
5e5e0b1aa9dde1cb3b54d40a53542d65cfafc6d080413db18d65204238ed29a7
unable to delete f431c65ac57238a9ade9f6406c41d077ea0a469df893eac0a03e4fe04dee830c (must force) - image is referred to in multiple tags
could not remove image 93a2f50b3eb0e35c37c0e81798933553d8938e5bbe6df4fa901d3fa181ef8af9 as it is being used by 1 containers
417531d957ab80b157983048939843d1f343cdf773b724252a8f3608158839e2
could not remove image 3be74ba3cc8c924cbd496e8ff1381cecc51c60d0c0fe088a0768fa641f1b68d3 as it is being used by 1 containers
3bfa511b67f82778ace94aaedb7da39d353f33eabc9ae24abad47805b6cef9c3
18f01f6f77ef941f5b31dd007d113620cbb1939ac33d1922edce7d9d2c9ebad7
cd45ed6b9e528278ffd1ff4a29d8eacc159c6fbdb202aa45d3d69f4dfa2a0b79
660f41442a278fab36077eaad1cb0bce5e0842b5ad5e34d0e3bb9ccf995391d3
unable to delete 8c376a94293dbec40d6a5cb244e9127afd587d5fe15585d06b87b7fc9561d873 (must force) - image is referred to in multiple tags
# podman rmi -f $(podman images -a -q)
1a2a4fce03697e74648ba88fcf548b8fa7f1e27a9c6aaf7b2f319efae51e75b5
f431c65ac57238a9ade9f6406c41d077ea0a469df893eac0a03e4fe04dee830c
93a2f50b3eb0e35c37c0e81798933553d8938e5bbe6df4fa901d3fa181ef8af9
3be74ba3cc8c924cbd496e8ff1381cecc51c60d0c0fe088a0768fa641f1b68d3
8c376a94293dbec40d6a5cb244e9127afd587d5fe15585d06b87b7fc9561d873
# podman images
#
-forceはコンテナが起動中でイメージを使ってようがお構いなしに削除するので、利用せざるを得ない時は慎重にご利用ください。
次回はRedmineコンテナイメージをプルしてローカルで起動させて、systemdでサービス管理できるようになるところまで書きたいと思います。読んでいただきありがとうございました。