LoginSignup
1
2

More than 5 years have passed since last update.

Macとsystemd-nspawnで普通の開発環境を作るまで(3)~ファイル共有設定~

Last updated at Posted at 2017-11-02

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

今回はファイルの共有設定を行い、Mac側からファイルを編集できるようにしてみます。

概要

今回はこんな感じにします。
Mac側に/Users/yamasita/mntというディレクトリを作り、そのディレクトリとVituralbox Ubuntu(host)内の/mntにvboxsfで繋げます。
さらにそのディレクトリをコンテナ側にマウントしてつなげることでMacからコンテナ内のファイルを触れるようにします。

fileshare.png

Ubuntu(host)とのファイル共有設定

まずvirtualbox guest additionsをインストールします。
ubuntu(host)にログイン後、rootで以下を実行します

# multiverseのパッケージなのでリポジトリを追加します
curl -L https://goo.gl/qsE7A8 > /etc/apt/sources.list
# インストール
apt update
apt install -y virtualbox-guest-dkms
# シャットダウン
shutdown -h now

次に、Virtualboxの設定から共有フォルダーを選び以下のように共有するディレクトリと名前を指定します。

Virtualbox設定.png

設定後、起動し、Ubuntu(host)のrootで以下のようにしてmountしてみます

# mount設定を追記、uid,gidを指定してアプリケーションユーザが触れるようにする
echo 'mnt /mnt vboxsf defaults,uid=1000,gid=1000 0 0' >> /etc/fstab
echo vboxsf >> /etc/modules
mount /mnt

これで、ubuntu(host)の/mntとMacの/Users/yamasita/mntがつながったと思います

Ubuntu(host)とコンテナを繋ぐ

最後にUbuntu(host)の/mntとコンテナの/mntを繋げます
Ubuntu(host)のrootから

# コンテナ停止
machinectl poweroff ubuntu
# nspawnファイルを作成
mkdir /etc/systemd/nspawn
curl -L https://goo.gl/3n6QkG > /etc/systemd/nspawn/ubuntu.nspawn
# コンテナ起動
machinectl start ubuntu

.nspawnファイルはコンテナ個別に設定するためのファイルです
[コンテナ名].nspawnファイルという名前で保存すれば、特定のコンテナだけに有効な設定を追加できます
今回は/mnt同士を繋げるのでBind=/mntを書いておきます
これで、Ubuntu(host)の/mntとコンテナの/mntが繋がりましたので最終的にMacの/Users/yamasita/mntとコンテナの/mntが繋がっているということになります。

Mac側から編集

本当にMac側で編集したファイルがコンテナ内から見えるかテストしてみます

# コンテナに入る
machinectl shell ubuntu /bin/bash
# appユーザの追加 ※おそらく最初のユーザなのでuid=1000,gid=1000のアカウントが作られます
useradd -m app
# 例としてmojoliciousを使います
apt update
apt install -y libmojolicious-perl
# appユーザになってWebアプリを作成
su - app
cd /mnt
mojo generate lite_app example.pl
morbo -l http://0.0.0.0:3000 example.pl

http://192.168.56.3:3000/ にアクセスするとmojoliciousが作るHTMLが見えると思います

Mac側で/Users/yamasita/mnt/example.plを編集してブラウザをリロードすると表示が変わります
このようにして、コンテナ内のファイルを編集できるようになります

次回は実際にDBコンテナを作ってRailsの開発環境を作ってみます
次回: Macとsystemd-nspawnで普通の開発環境を作るまで(4)~実践編~

1
2
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
1
2