ホーム > パッケージ・システム管理 > systemd-nspawn

systemd-nspawn: 軽量コンテナの実行

systemd-nspawnはsystemdプロジェクトの一部であり、仮想マシンなしで独立したLinuxコンテナ環境を作成および実行するためのツールです。chrootよりも強力で、仮想マシンよりも軽量にシステムを分離し、テスト、開発、デプロイメント環境の構築に使用されます。

概要

systemd-nspawnは、ホストシステムのカーネルを共有しながらも、ファイルシステム、プロセスツリー、ネットワークなどを分離してコンテナを実行します。これは、開発およびテスト環境を安全に分離したり、異なるディストリビューション環境を試したりするのに役立ちます。

主な特徴

  • 軽量コンテナ環境の提供
  • ホストカーネルの共有とリソース効率
  • ファイルシステム、プロセス、ネットワークの分離
  • chrootよりも強力な分離機能
  • systemdベースのコンテナブートサポート

主なオプション

systemd-nspawnの主なオプションは、コンテナの動作方法、分離レベル、ネットワーク設定などを制御します。

コンテナ基本設定

ネットワーク設定

リソースと権限

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`systemd-nspawn` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用例

systemd-nspawnを使用して様々なコンテナ環境を実行する例です。

基本コンテナ実行 (bash)

sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash

指定されたルートファイルシステムでコンテナを開始し、bashシェルを実行します。

systemdブートコンテナ

sudo systemd-nspawn -b -D /var/lib/machines/mycontainer

コンテナ内部でsystemdを初期プロセスとしてブートし、完全なシステム環境を提供します。

ネットワーク分離コンテナ

sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash

ネットワークインターフェースなしでコンテナを実行し、外部ネットワークアクセスをブロックします。

ホストパスバインドマウント

sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash

ホストの/home/user/dataディレクトリをコンテナの/mnt/dataにマウントします。

仮想イーサネットでのネットワーク接続

sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash

ホストとコンテナの間に仮想イーサネットインターフェースを作成し、ネットワークを接続します。

インストール

systemd-nspawnは`systemd-container`パッケージの一部として提供されます。ほとんどのsystemdベースのLinuxディストリビューションでは、デフォルトでインストールされているか、簡単にインストールできます。

Debian/Ubuntu

sudo apt update && sudo apt install systemd-container

aptパッケージマネージャーを使用してsystemd-containerパッケージをインストールします。

Fedora/RHEL/CentOS

sudo dnf install systemd-container

dnfパッケージマネージャーを使用してsystemd-containerパッケージをインストールします。

Arch Linux

sudo pacman -S systemd-container

pacmanパッケージマネージャーを使用してsystemd-containerパッケージをインストールします。

ヒントと注意点

systemd-nspawnを効果的に使用するためのヒントと注意点です。

主なヒント

  • **ルート権限が必要**: systemd-nspawnはシステムリソースにアクセスするため、`sudo`またはルート権限で実行する必要があります。
  • **コンテナイメージの準備**: コンテナのルートファイルシステムは事前に準備されている必要があります。`debootstrap`、`dnf --installroot`、`pacstrap`などのツールを使用して作成できます。
  • **ネットワーク設定の理解**: `--network-veth`はホストとコンテナ間の通信を許可し、`--private-network`はコンテナを完全に分離します。使用目的に応じて適切なオプションを選択してください。
  • **セキュリティ上の考慮事項**: systemd-nspawnは強力な分離を提供しますが、ホストカーネルを共有するため、Dockerのような完全な仮想化ソリューションよりもセキュリティ上の脆弱性にさらされる可能性があります。信頼できないコードを実行する際は注意が必要です。


同じカテゴリのコマンド