blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。 また、計算を主題に制作を行い、現代音楽作品や公共インスタレーション作品など技術提供を行う。 三輪眞弘に師事する。

List

LXDのイメージを使って、systemd-nspawnでコンテナを起動する。

前置き

いろいろなコンテナの規格がありますが、普段LXDとsystemd-nspawnを使っています。 systemdの方がコンセプト的に好きなのですが、LXDに比べるとまだユーザ体験では劣っている様に思えます。 まず、systemd-nspawnの場合、起動イメージをどっから持ってくればいいんだろうか、というところでめんどくさいので、イメージをLXDから持ってくることをやってみました。

環境

install

$ sudo apt install lxd
$ sudo apt install systemd-container

download image

lxcコマンドを使ってイメージをダウンロードします。

$ mkdir xenial
$ lxc lxc image export images:ubuntu/xenial ./xenial
Output is in ./xenial
$ ls -l xenial
total 82M
-rw-rw-r-- 1 xx xx 668 Feb  4 20:47 lxd.tar.xz
-rw-rw-r-- 1 xx xx 82M Feb  4 20:48 rootfs.tar.xz

extract image

ダウンロードしたイメージを展開します。

$ cd xenial
$ mkdir rootfs
$ tar xJvf rootfs.tar.xz -C rootfs
$ sudo systemd-nspawn -D rootfs

start container

下記のコマンドで上記までで用意したrootfsでコンテナを起動できます。

$ sudo systemd-nspawn -D rootfs
Spawning container rootfs on /home/xx/xenial/rootfs.
Press ^] three times within 1s to kill container.
Failed to create directory /home/xx/xenial/rootfs/sys/fs/selinux: Read-only file system
Failed to create directory /home/xx/xenial/rootfs/sys/fs/selinux: Read-only file system
root@rootfs:~#

refs