Buildah
Buildah は Open Container Initiative (OCI) コンテナイメージの生成を補助するツールです。Buildah パッケージが提供するコマンドラインツールで以下のことができます:
- スクラッチから、または既存イメージからコンテナを作成
- 動作中のコンテナから、あるいは Dockerfile からイメージを作成
- OCI イメージ形式や伝統的な docker イメージ形式でイメージを作成可能
- 動作中のコンテナのルートファイルシステムをマウントして操作
- 動作中のコンテナのルートファイルシステムをアンマウント
- コンテナのルートファイルシステムの中身をファイルシステムレイヤーとして使用して新しいイメージを作成
- 動作中のコンテナあるいはイメージを削除
- ローカルコンテナの名前を変更
コンテナの生成で一番有名な対抗アプリケーションは docker です。Buildah はコンテナの実行には使えません。実行したい場合は podman があります。
インストール
buildah および podman パッケージを インストール して下さい、または開発バージョンの場合は buildah-gitAUR
非 root ユーザー として実行する場合は、パフォーマンスとストレージスペースの効率を向上させるために、fuse-overlayfs もインストールします。
設定
非特権コンテナの生成のサポートを有効化 (任意)
Buildah を使って非特権コンテナを生成したい場合、以下の設定が必要です。
まず、カーネルにユーザー名前空間のサポートが必要です (CONFIG_USER_NS
が有効になっているカーネル)。Arch Linux のカーネルは全て CONFIG_USER_NS
に対応しています。しかしながら、セキュリティ上の問題から、デフォルトの Arch カーネルではユーザー名前空間は root ユーザーでのみ有効になっています。
通常ユーザーで非特権コンテナを実行するために sysctl 設定 kernel.unprivileged_userns_clone
を有効にしてください。sysctl kernel.unprivileged_userns_clone=1
を実行することで実行中のセッションで有効にしたり、sysctl.d(5) で永続的に有効化できます。
そして、/etc/subuid
と /etc/subgid
を作成して、コンテナを実行するユーザーのコンテナ化する uid/gid の組み合わせのマッピングを作ります。root ユーザー (と systemd システムユニット) と buildah
ユーザーの例:
/etc/subuid
root:100000:65536 buildah:100000:65536
/etc/subgid
root:100000:65536 buildah:100000:65536