「Buildah」の版間の差分
ナビゲーションに移動
検索に移動
(→インストール: 情報を更新) |
|||
30行目: | 30行目: | ||
== 設定 == |
== 設定 == |
||
− | === |
+ | === 特権のないコンテナの構築サポートを有効にする === |
− | Buildah を使って''非特権''コンテナを生成したい場合、以下の設定が必要です。 |
||
+ | Buildah を使用して ''特権のない'' コンテナを構築したいユーザーは、''初めて podman を実行する前に'' 追加のセットアップ手順を完了する必要があります。 |
||
− | まず、カーネルに'''ユーザー名前空間'''のサポートが必要です ({{ic|CONFIG_USER_NS}} が有効になっているカーネル)。Arch Linux のカーネルは全て {{ic|CONFIG_USER_NS}} に対応しています。しかしながら、セキュリティ上の問題から、デフォルトの Arch カーネルではユーザー名前空間は ''root'' ユーザーでのみ有効になっています。 |
||
+ | {{Note|特権のないコンテナの実行専用のシステムを構築している場合は、ユーザーを追加する前に次の手順に従ってください。こうすることで、{{ic|/etc/subuid}} と {{ic|/etc/subgid}} を編集する必要がなくなります。''useradd'' が自動的に編集してくれるので、必要なのは、root として {{ic|touch /etc/subgid}} と {{ic|touch /etc/subuid}} を実行するだけで済みます。}} |
||
− | 通常ユーザーで非特権コンテナを実行するために ''sysctl'' 設定 {{ic|kernel.unprivileged_userns_clone}} を有効にしてください。{{ic|1=sysctl kernel.unprivileged_userns_clone=1}} を実行することで実行中のセッションで有効にしたり、{{man|5|sysctl.d}} で永続的に有効化できます。 |
||
− | + | 最後に、{{ic|/etc/subuid}} と {{ic|/etc/subgid}} の両方を作成して、コンテナを実行できる各ユーザーのコンテナ化された UID/GID ペアへのマッピングを含めます。[https://github.com/containers/libpod/blob/master/docs/tutorials/rootless_tutorial.md#etcsubuid-and-etcsubgid-configuration] 以下の例は、root ユーザー (および systemd システムユニット) とユーザー {{ic|buildah}} の例です。: |
|
{{hc|/etc/subuid| |
{{hc|/etc/subuid| |
||
− | root:100000:65536 |
||
buildah:100000:65536 |
buildah:100000:65536 |
||
}} |
}} |
||
{{hc|/etc/subgid| |
{{hc|/etc/subgid| |
||
− | root:100000:65536 |
||
buildah:100000:65536 |
buildah:100000:65536 |
||
}} |
}} |
||
+ | |||
+ | 上記の変更を適用する前に podman を実行した場合、特権のないユーザーとしてイメージをプルしようとするとエラーが発生します。これを修正するには、{{ic|podman system Migrate}} を実行します。 |
||
+ | |||
+ | すべてがうまくいった場合、ログアウトして再度ログインした後、{{ic|buildah Images}} はエラーにならないはずです |
||
+ | |||
+ | {{Note|{{ic|/run/user/0}} へのアクセスでエラーが発生した場合は、''su'' を使用してテストに使用しているユーザーになっている可能性があります。''su'' 以降はそのユーザーとしてログインする必要があります。{{ic|--login}} フラグを指定しないと、{{ic|XDG_RUNTIME_DIR}} やその他の環境変数が正しい値に設定されません。}} |
||
== 参照 == |
== 参照 == |
2024年2月14日 (水) 04:11時点における版
Buildah は Open Container Initiative (OCI) コンテナイメージの生成を補助するツールです。Buildah パッケージが提供するコマンドラインツールで以下のことができます:
- スクラッチから、または既存イメージからコンテナを作成
- 動作中のコンテナから、あるいは Dockerfile からイメージを作成
- OCI イメージ形式や伝統的な docker イメージ形式でイメージを作成可能
- 動作中のコンテナのルートファイルシステムをマウントして操作
- 動作中のコンテナのルートファイルシステムをアンマウント
- コンテナのルートファイルシステムの中身をファイルシステムレイヤーとして使用して新しいイメージを作成
- 動作中のコンテナあるいはイメージを削除
- ローカルコンテナの名前を変更
コンテナの生成で一番有名な対抗アプリケーションは docker です。Buildah はコンテナの実行には使えません。実行したい場合は podman があります。
インストール
buildah および podman パッケージを インストール して下さい、または開発バージョンの場合は buildah-gitAUR
非 root ユーザー として実行する場合は、パフォーマンスとストレージスペースの効率を向上させるために、fuse-overlayfs もインストールします。
設定
特権のないコンテナの構築サポートを有効にする
Buildah を使用して 特権のない コンテナを構築したいユーザーは、初めて podman を実行する前に 追加のセットアップ手順を完了する必要があります。
最後に、/etc/subuid
と /etc/subgid
の両方を作成して、コンテナを実行できる各ユーザーのコンテナ化された UID/GID ペアへのマッピングを含めます。[1] 以下の例は、root ユーザー (および systemd システムユニット) とユーザー buildah
の例です。:
/etc/subuid
buildah:100000:65536
/etc/subgid
buildah:100000:65536
上記の変更を適用する前に podman を実行した場合、特権のないユーザーとしてイメージをプルしようとするとエラーが発生します。これを修正するには、podman system Migrate
を実行します。
すべてがうまくいった場合、ログアウトして再度ログインした後、buildah Images
はエラーにならないはずです