systemd-nspawn でコンテナ作成

SELinux の無効化

永続的に無効にし再起動。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

systemd-networkd と systemd-resolved のインストール

# yum -y install systemd-networkd systemd-resolved
# systemctl disable NetworkManager
# systemctl start systemd-networkd systemd-resolved
# systemctl enable systemd-networkd systemd-resolved

ブリッジネットーワーク設定

# mkdir /etc/systemd/network/

[NetDev]
Name=br0
Kind=bridge

[Match]
Name=br0

[Network]
DNS=8.8.8.8
Address=10.0.0.1/24
Gatwate=10.0.0.1

IPForward=ipv4
IPMasquerade=yes

コンテナ作成

–installroot でコンテナのパスを指定します。

# yum -y --releasever=7 --disablerepo='*' --enablerepo=base install systemd yum passwd vim-minimal systemd-networkd --installroot=/var/lib/machines/web001

コンテナの初期化

# systemd-nspawn -D /var/lib/machines/web001

passwd コマンドで、コンテナの root パスワード設定
設定が終わったら、1秒以内に ] を3回押します

Spawning container web001 on /var/lib/machines/web001.
Press ^] three times within 1s to kill container.
Failed to create directory /var/lib/machines/web001//sys/fs/selinux: Read-only file system
Failed to create directory /var/lib/machines/web001//sys/fs/selinux: Read-only file system
-bash-4.2# passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

コンテナのネットワーク設定

ネットワーク設定用のフォルダ作成

# mkdir /var/lib/machines/web001/etc/systemd/network

[Match]
Name=host0

[Network]
Address=10.0.0.20/24
Gateway=10.0.0.1

コンテナの起動

# systemd-nspawn --network-bridge=br0 -bD /var/lib/machines/web001

コンテナにパッケージのインストール

コンテナのパッケージインストールはホストからでも行えます

# yum install -y --installroot=/var/lib/machines/web001 パッケージ

コマンドパッケージ名
ifconfig, routenet-tools
ip iproute
ping iputils
ssh openssh-server

コンテナ内から行う場合は、ブリッジ接続を使わなければ、そのままで外部インターネットに接続できます
–bind=/var/cache/yum で yum のキャッシュフォルダを、ホストと共有させています

# systemd-nspawn --bind=/var/cache/yum -bD /var/lib/machines/web001

ポートフォワーディング

コンテナ内の http に外部から接続するためには、以下のようにポートフォワーディングの設定が必要です

# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.20 --permanent

設定の削除は、–add-forward-port の代わりに、–remove-forward-port

# firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.20 --permanent

自動起動の設定

共通設定ファイルのコピー

# cp /usr/lib/systemd/system/systemd-nspawn@.service /etc/systemd/system/
After で、systemd-networkd.service と systemd-resolved.service が起動するまでコンテナ起動を遅延
–network-veth を –network-bridge=br0 に書き換え

[Unit]
Description=Container %I
Documentation=man:systemd-nspawn(1)
PartOf=machines.target
Before=machines.target
After=systemd-networkd.service systemd-resolved.service

[Service]
# ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --machine=%I
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-bridge=br0 --bind=/var/cache/yum --machine=%I

コンテナの起動と、自動起動設定

# systemctl enable machines.target
# systemctl start systemd-nspawn@web001
# systemctl enable systemd-nspawn@web001

コマンド内容
start コンテナの起動
stop コンテナの停止
enable コンテナを自動起動に登録
disable コンテナを自動起動から削除
status コンテナの状態取得

systemd-nspawn の管理コマンド machinectl について

コマンド 内容
machinectl list 起動中のコンテナ一覧
machinectl list-images コンテナ一覧
machinectl start コンテナ名 コンテナの起動
machinectl poweroff コンテナ名コンテナのシャットダウン
centos/v7/systemd-nspawn_でコンテナ作成.txt · 最終更新: 2018/09/18 17:36 by admin
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki