2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Macとsystemd-nspawnで普通の開発環境を作るまで(1)~ネットワーク設定~

Last updated at Posted at 2017-09-19

概要

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以降であれば基本的に変わらないかと思います。

今回作成するネットワーク

network.png

こんな感じでホストから外への接続も許して、MacBook側からはIPアドレス直打ちで(ポートフォワーディング無しで)繋がるようにします。

VirtualBox設定

まずホストオンリーネットワークを作成します
Virtualbox -> 環境設定 -> ネットワーク -> ホストオンリーネットワーク
と進み右端の追加ボタンから追加します
hostonly1.png
DHCPサーバのチェックは外しておきます
hostonly2.png

設定が終わったら今度はVirtualBoxマネージャ窓から、仮想マシンを選んで
設定-> ネットワーク -> アダプター1を選択してNATにします

adapter01.png

アダプター2は先ほど作ったホストオンリーネットワークを選びます
※プロミスキャスモードをすべて許可にするのも忘れないで下さい

adapter02r.png

ホスト設定

今回手元の仮想マシンでは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

次回: Macとsystemd-nspawnで普通の開発環境を作るまで(2)~起動設定~

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?