尝试在systemd-nspawn中运行不同的发行版

这是2017年systemd-nspawn降低时间活动的第一篇文章。

我們這次將嘗試使用systemd-nspawn運行各種發行版。

准备工作

主机将使用Debian9.2。除了Debian系,其他操作系统将通过Dockerhub下载映像。

# systemd-nspawnインストール
apt install systemd-container
# ファイル準備用パッケージ
apt install debootstrap
# イメージダウンロード用にDocker入れる
wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
dpkg -i docker-ce_17.09.0~ce-0~debian_amd64.deb
docker export $(docker create centos:7) > /tmp/centos7.tar
docker export $(docker create fedora:27 echo ok) > /tmp/fedora27.tar

Debian 9 可以改为 “Debian 9 版本”。

使用debootstrap即可完成。

cd /var/lib/machines
debootstrap --components=main --variant=minbase stretch debian9 http://ftp.jp.debian.org/debian/
systemd-nspawn -D ./debian9/ # コンテナ内へ
passwd # パスワード設定
apt update
apt install systemd # systemd入れる
exit # コンテナ内から脱出
systemd-nspawn -b -D ./debian9/ # boot
# rootで入れる(パスワードはさっき設定したやつ)
systemctl poweroff # 気が済んだら終わり

Ubuntu 16.04 是一个操作系统的版本。

Ubuntu的感觉也一样。

cd /var/lib/machines
debootstrap --arch amd64 xenial ./ubuntu1604 http://archive.ubuntu.com/ubuntu
vim ubuntu1604/etc/systemd/resolved.conf # DNS=のところを自分のDNSサーバのアドレスへ 例) DNS=8.8.8.8
systemd-nspawn -D ./ubuntu1604/ # コンテナ内へ
passwd # パスワード設定
systemctl enable systemd-resolved.service # DNS設定
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
exit # コンテナ内から脱出
systemd-nspawn -b -D ./ubuntu1604 # boot
# rootで入れる(パスワードはさっき設定したやつ)
systemctl poweroff # 気が済んだら終わり

CentOS 7 可 以。

由于采用了systemd标准配置,所以非常方便。

cd /var/lib/machines/
machinectl import-tar /tmp/centos7.tar # インポート
systemd-nspawn -D ./centos7 # コンテナ内へ
passwd # パスワード設定
exit # コンテナ内から脱出
systemd-nspawn -b -D ./centos7 # boot
# rootで入れる(パスワードはさっき設定したやつ)
systemctl poweroff # 気が済んだら終わり

Fedora 27 一种选项

cd /var/lib/machines/
machinectl import-tar /tmp/fedora27.tar # インポート
systemd-nspawn -D ./fedora27 # コンテナ内へ
dnf install passwd
passwd # パスワード設定
systemctl unmask console-getty.service getty.target
systemctl enable console-getty.service getty.target
exit # コンテナ内から脱出
systemd-nspawn -b -D ./fedora27 # boot
# rootで入れる(パスワードはさっき設定したやつ)
systemctl poweroff # 気が済んだら終わり

概括

整体有动作。