概要
systemd-nspawnをMacBook Airで使うまでに行った設定をまとめておきます。
もっといい方法や、間違っている箇所等あれば教えてくれると嬉しいですm( _ _ )m。
必要なソフトの準備
今回は、Virtualboxを使用します。
今回使用したバージョンは以下の通りです。
- MacOS Sierra 10.12.6
- Virtualbox 5.1.28
- Ubuntu Server 16.04.3 LTS
Virtualboxには Ubuntu Server 16.04.3 LTS をインストールしていますが、16.04以降であれば基本的に変わらないかと思います。
今回作成するネットワーク
こんな感じでホストから外への接続も許して、MacBook側からはIPアドレス直打ちで(ポートフォワーディング無しで)繋がるようにします。
VirtualBox設定
まずホストオンリーネットワークを作成します
Virtualbox -> 環境設定 -> ネットワーク -> ホストオンリーネットワーク
と進み右端の追加ボタンから追加します
DHCPサーバのチェックは外しておきます
設定が終わったら今度はVirtualBoxマネージャ窓から、仮想マシンを選んで
設定-> ネットワーク -> アダプター1を選択してNATにします
アダプター2は先ほど作ったホストオンリーネットワークを選びます
※プロミスキャスモードをすべて許可にするのも忘れないで下さい
ホスト設定
今回手元の仮想マシンではip a
コマンドで確認すると以下のようになったので
root@ubuntu-host:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:da:56:4b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:feda:564b/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 08:00:27:92:0c:e2 brd ff:ff:ff:ff:ff:ff
- enp0s3 : アダプター1(NAT)
- enp0s8 : アダプター2(ホストオンリーネットワーク)
として設定します
インターフェイス名は各自の環境に読み替えてください
※DHCPで既にIPアドレスが設定されている方がNATです
# 必要パッケージのインストール
apt update
apt install iptables systemd-container bridge-utils
# ブリッジ設定
curl -L https://goo.gl/MU1SDV > /etc/network/interfaces
# IPマスカレード設定
curl -L https://goo.gl/dkVBLf > /etc/network/if-pre-up.d/systemd-nspawn
chmod +x /etc/network/if-pre-up.d/systemd-nspawn
# 転送許可
curl -L https://goo.gl/JV9AZP > /etc/sysctl.conf
# 再起動
shutdown -r now
コンテナ設定
# コンテナの用意
apt install debootstrap
cd /var/lib/machines
debootstrap --arch amd64 xenial ./ubuntu http://archive.ubuntu.com/ubuntu
# ホスト名を変える
echo ubuntu-guest > ubuntu/etc/hostname
perl -i -ple 's/^(127.0.0.1\slocalhost).*/$1 ubuntu-guest/' ubuntu/etc/hosts
# ネットワーク設定
curl -L https://goo.gl/2Zf3gu > ubuntu/etc/network/interfaces.d/host0
# コンテナ内に一度入ってrootパスワードを設定する
systemd-nspawn -D ./ubuntu
# ↓ここはコンテナ内で打つコマンド
passwd
# 好きなパスワードを設定する
exit
# ↑ここまでコンテナ内
これで完成です
以下のコマンドで電源を押したみたいに起動すると思います
# 起動
systemd-nspawn -D ./ubuntu --network-bridge=br0 -b
コンテナ内にはrootユーザで先ほど設定したパスワードでログインできるかと思います
以降普通の仮想マシンのように使えます
# パッケージリスト更新
apt update
# nginxインストール後に自動的に立ち上がる
# http://192.168.56.3/ でアクセスできるはす
apt install nginx
# 終了するときはshutdownコマンドで
# ( Ctrl+] を3回押しても終了する )
shutdown -h now