コンテナと言えば Docker がメジャーですが、1プロセス、1アプリの基本概念が使いにくと
思っている方は、systemd-nspawn のほうが使いやすと思われます。
# apt-get -y install systemd-container debootstrap
基本となるコンテナの作成(20分ぐらい)。
# cd /var/lib/machines # debootstrap --arch=armhf buster raspbian-buster http://archive.raspbian.org/raspbian
クローンイメージの作成
# machinectl clone raspbian-buster raspbian-buster-base
インスタンスを起動
# systemd-nspawn -D /var/lib/machines/raspbian-buster-base
※コンテナから抜けるには、1秒以内に ] を3回押します
rootのパスワード設定
# passwd root
コンテナを起動(–bind で apt-get のキャッシュをホストと共用する)
# systemd-nspawn --bind=/var/cache/apt -bD /var/lib/machines/raspbian-buster-base
パッケージの更新
# apt-get update # apt-get upgrade
ホスト名の設定
# echo RaspbianBusterBase > /etc/hostname
起動中のコンテナにログインするため dbus は入れておきます
# apt-get -y install dbus
あとは、vim 入れたり、コマンドプロンプト変えたり基本設定を行います。
# systemctl start systemd-networkd # systemctl enable systemd-networkd
[NetDev] Name=br0 Kind=bridge
[Match] Name=br0 [Network] DNS=8.8.8.8 Address=10.0.0.1/24 Gatwate=10.0.0.1 IPForward=ipv4 IPMasquerade=yes LinkLocalAddressing=no
# ln -sf /dev/null /etc/systemd/network/80-container-host0.network # systemctl start systemd-networkd # systemctl enable systemd-networkd
[Match] Virtualization=container Name=host0 [Network] DNS=10.0.0.1 Address=10.0.0.20/24 Gateway=10.0.0.1
コマンド | 機能 |
---|---|
machinectl list | 起動中のコンテナ一覧 |
machinectl list-images | コンテナ一覧 |
machinectl clone クローン元のコンテナ名 クローン後のコンテナ名 | コンテナのクローン |
machinectl remove コンテナ名 | コンテナの削除 |
machinectl rename 元のコンテナ名 新しいコンテナ名 | コンテナのリネーム |
machinectl start コンテナ名 | コンテナの起動 |
machinectl poweroff コンテナ名 | コンテナのシャットダウン |
machinectl status コンテナ名 | コンテナの状態取得 |
machinectl enable コンテナ名 | コンテナを自動起動に登録 |
machinectl disable コンテナ名 | コンテナを自動起動から削除 |
machinectl shell コンテナ名 /bin/bash | コンテナにログイン |