CentOS Stream 9
Sponsored Link

Buildah : インストール2022/03/15

 
コンテナーイメージ作成ツール Buildah をインストールします。
OCI (Open Container Initiative) イメージ フォーマットに準拠したコンテナーイメージを作成可能 且つ デーモン不要で利用できます。
[1] Buildah をインストールします。
[root@dlp ~]#
dnf -y install buildah
[2] Buildah の基本操作です。
イメージからワーキングコンテナーを新規作成する。
# [centos] イメージからワーキングコンテナー作成

[root@dlp ~]#
buildah from centos:stream9

Resolved "centos" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull quay.io/centos/centos:stream9...
Getting image source signatures
...
...
Writing manifest to image destination
Storing signatures
centos-working-container

# コンテナーリスト

[root@dlp ~]#
buildah containers

CONTAINER ID  BUILDER  IMAGE ID     IMAGE NAME                       CONTAINER NAME
516422a4010b     *     44ffcc4acee8 quay.io/centos/centos:stream9    centos-working-container

# コンテナーイメージリスト

[root@dlp ~]#
buildah images

REPOSITORY              TAG       IMAGE ID       CREATED      SIZE
quay.io/centos/centos   stream9   44ffcc4acee8   4 days ago   152 MB

# コンテナーイメージは podman からも使用可

[root@dlp ~]#
podman images

REPOSITORY             TAG         IMAGE ID      CREATED     SIZE
quay.io/centos/centos  stream9     44ffcc4acee8  4 days ago  152 MB
[3] ワーキングコンテナーを操作する。
# シェル変数に格納可能

[root@dlp ~]#
container=$(buildah from centos:stream9)

[root@dlp ~]#
echo $container

centos-working-container-1
# コンテナーから各種コマンド実行可能

[root@dlp ~]#
buildah run $container echo "Hello Buildah World"

Hello Buildah World
[root@dlp ~]#
buildah run $container bash

[root@cfad55e0d3b5 /]#
dnf -y install python3

[root@cfad55e0d3b5 /]#
[root@dlp ~]#
buildah run $container python3 -V

Python 3.9.10
[4] ワーキングコンテナー内へファイルをコピーする。
[root@dlp ~]#
echo "buildah test" > buildah.txt

[root@dlp ~]#
buildah copy $container buildah.txt /tmp/buildah.txt

7553c62d21edda64a3067fa9805a5cd8e5781c6058be12eb9792d7e0e9781ed4
[root@dlp ~]#
buildah run $container cat /tmp/buildah.txt

buildah test
[5] ワーキングコンテナーのファイルシステムをマウントする。
[root@dlp ~]#
buildah mount $container

/var/lib/containers/storage/overlay/1b67afef1b0ab8b7f527f0c5a748d7656fc80f4b70bc0346e9fe0ef5c13117ac/merged
[root@dlp ~]#
ll /var/lib/containers/storage/overlay/1b67afef1b0ab8b7f527f0c5a748d7656fc80f4b70bc0346e9fe0ef5c13117ac/merged

total 4
dr-xr-xr-x.  2 root root    6 Aug 10  2021 afs
lrwxrwxrwx.  1 root root    7 Aug 10  2021 bin -> usr/bin
dr-xr-xr-x.  2 root root    6 Aug 10  2021 boot
drwxr-xr-x.  2 root root    6 Mar 10 22:24 dev
drwxr-xr-x. 39 root root 4096 Mar 10 22:25 etc
drwxr-xr-x.  2 root root    6 Aug 10  2021 home
.....
.....

# アンマウント

[root@dlp ~]#
buildah umount $container

cfad55e0d3b59cd5624b439b916ee2735e5077c59d21e38283bc24cb9ac63116
[6] ワーキングコンテナーからイメージを作成する。
[root@dlp ~]#
buildah commit $container my-centos:latest

Getting image source signatures
...
...
Writing manifest to image destination
Storing signatures
776f546c925caefa697cb8c665d2198b9fa4930d90806f586aacf0168b6c40d0

[root@dlp ~]#
buildah images

REPOSITORY              TAG       IMAGE ID       CREATED          SIZE
localhost/my-centos     latest    776f546c925c   17 seconds ago   190 MB
quay.io/centos/centos   stream9   44ffcc4acee8   4 days ago       152 MB

# 作成したコンテナーイメージは podman からも利用可

[root@dlp ~]#
podman run localhost/my-centos uname -a

Linux 4d5e0aaa29ed 5.14.0-70.el9.x86_64 #1 SMP PREEMPT Thu Feb 24 23:01:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[7] コンテナーイメージを指定の Registry へ Push する。
[root@dlp ~]#
buildah images

REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
localhost/my-centos     latest    776f546c925c   5 minutes ago   190 MB
quay.io/centos/centos   stream9   44ffcc4acee8   4 days ago      152 MB

# [localhost/my-centos] イメージを [node01.srv.world:5000] へ Push する
# Push 先の registry が SSL/TLS 未対応の場合は [--tls-verify=false] オプション付加が必要

[root@dlp ~]#
buildah push --tls-verify=false localhost/my-centos node01.srv.world:5000/my-centos

Getting image source signatures
...
...
...
Writing manifest to image destination
Storing signatures

[root@dlp ~]#
curl node01.srv.world:5000/v2/_catalog

{"repositories":["my-centos"]}
# 他の任意のノードから Pull 可能

[root@node01 ~]#
podman pull --tls-verify=false node01.srv.world:5000/my-centos

[root@node01 ~]#
podman images

REPOSITORY                       TAG         IMAGE ID      CREATED        SIZE
node01.srv.world:5000/my-centos  latest      776f546c925c  7 minutes ago  190 MB
docker.io/library/registry       2           8948869ebfee  6 days ago     24.7 MB
関連コンテンツ