永続的に無効にし再起動。
# 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
# 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, route | net-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 が起動するまでコンテナ起動を遅延
[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 | コンテナの状態取得 |
コマンド | 内容 |
---|---|
machinectl list | 起動中のコンテナ一覧 |
machinectl list-images | コンテナ一覧 |
machinectl start コンテナ名 | コンテナの起動 |
machinectl poweroff コンテナ名 | コンテナのシャットダウン |