Debian12 で LXC を試す
環境
Raspberry Pi OS 上の KVM 仮想マシン環境(Debian12 bookworm / CloudImage) に LXC を入れて検証した。
$ uname -a
Linux localhost 6.1.0-26-cloud-arm64 #1 SMP Debian 6.1.112-1 (2024-09-30) aarch64 GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ cat /etc/debian_version
12.7
インストール
apt でインストールできる
$ sudo apt update && sudo apt upgrade && sudo apt install lxc
インストールされたテンプレートの一覧
$ ls -l /usr/share/lxc/templates
total 576
-rwxr-xr-x 1 root root 13630 Jun 14 2024 lxc-alpine
-rwxr-xr-x 1 root root 14184 Jun 14 2024 lxc-altlinux
-rwxr-xr-x 1 root root 11234 Jun 14 2024 lxc-archlinux
-rwxr-xr-x 1 root root 8601 Nov 30 2023 lxc-busybox
-rwxr-xr-x 1 root root 30633 Jun 14 2024 lxc-centos
-rwxr-xr-x 1 root root 10368 Jun 14 2024 lxc-cirros
-rwxr-xr-x 1 root root 30408 Jun 14 2024 lxc-debian
-rwxr-xr-x 1 root root 25469 Jun 14 2024 lxc-devuan
-rwxr-xr-x 1 root root 14497 Nov 30 2023 lxc-download
-rwxr-xr-x 1 root root 41919 Jun 14 2024 lxc-fedora
-rwxr-xr-x 1 root root 49755 Jun 14 2024 lxc-fedora-legacy
-rwxr-xr-x 1 root root 28405 Jun 14 2024 lxc-gentoo
-rwxr-xr-x 1 root root 24509 Jun 14 2024 lxc-kali
-rwxr-xr-x 1 root root 7178 Nov 30 2023 lxc-local
-rwxr-xr-x 1 root root 10737 Nov 30 2023 lxc-oci
-rwxr-xr-x 1 root root 13893 Jun 14 2024 lxc-openmandriva
-rwxr-xr-x 1 root root 16877 Jun 14 2024 lxc-opensuse
-rwxr-xr-x 1 root root 41706 Jun 14 2024 lxc-oracle
-rwxr-xr-x 1 root root 14170 Jun 14 2024 lxc-plamo
-rwxr-xr-x 1 root root 13967 Jun 14 2024 lxc-pld
-rwxr-xr-x 1 root root 14277 Jun 14 2024 lxc-sabayon
-rwxr-xr-x 1 root root 19300 Jun 14 2024 lxc-slackware
-rwxr-xr-x 1 root root 26656 Jun 14 2024 lxc-sparclinux
-rwxr-xr-x 1 root root 6845 Jun 14 2024 lxc-sshd
-rwxr-xr-x 1 root root 26276 Jun 14 2024 lxc-ubuntu
-rwxr-xr-x 1 root root 11747 Jun 14 2024 lxc-ubuntu-cloud
-rwxr-xr-x 1 root root 6018 Jun 14 2024 lxc-voidlinux
コンテナの作成
試しに Debian のコンテナを作成する。
$ sudo lxc-create -n debian-test -t debian
:
:
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
コンテナのディレクトリの様子。
$ sudo du -sh /var/lib/lxc
297M /var/lib/lxc
$ sudo ls -l /var/lib/lxc
total 4
drwxrwx--- 5 root root 4096 Jan 5 08:09 debian-test
キャッシュのディレクトリの様子。
$ sudo du -sh /var/cache/lxc
326M /var/cache/lxc
$ sudo ls -l /var/cache/lxc
total 8
drwxr-xr-x 3 root root 4096 Jan 5 05:46 apparmor
drwxr-xr-x 3 root root 4096 Jan 5 05:40 debian
ディスク容量を喰うので、ディスクをマウントしたり、シンボリックリンク貼ったりして、/var から逃がしてやったほうがよさそう。
コンテナの起動
$ sudo lxc-start -n debian-test -d
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test RUNNING 0 - 10.0.3.25 - false
$ sudo sudo lxc-info -n debian-test
Name: debian-test
State: RUNNING
PID: 1115
IP: 10.0.3.91
Link: vethJywgE5
TX bytes: 2.03 KiB
RX bytes: 3.53 KiB
Total bytes: 5.56 KiB
ホスト側からみたNW構成。
ホスト側に lxcbr0 というインタフェースが作られている。
デフォルトだと、veth デバイスが作られてコンテナに割り当てられ、lxcbr0 を通して通信する。
$ ip addr
:
:
3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 10.0.3.1/24 brd 10.0.3.255 scope global lxcbr0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe00:0/64 scope link
valid_lft forever preferred_lft forever
4: vethQVXzS7@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxcbr0 state UP group default qlen 1000
link/ether fe:91:d7:60:09:64 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::fc91:d7ff:fe60:964/64 scope link
valid_lft forever preferred_lft forever
$ ping 10.0.3.25 -c 4
PING 10.0.3.25 (10.0.3.25) 56(84) bytes of data.
64 bytes from 10.0.3.25: icmp_seq=1 ttl=64 time=0.257 ms
64 bytes from 10.0.3.25: icmp_seq=2 ttl=64 time=0.249 ms
64 bytes from 10.0.3.25: icmp_seq=3 ttl=64 time=0.257 ms
64 bytes from 10.0.3.25: icmp_seq=4 ttl=64 time=0.258 ms
--- 10.0.3.25 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3068ms
rtt min/avg/max/mdev = 0.249/0.255/0.258/0.003 ms
コンテナ内でログインシェルを実行
起動しているコンテナのログインシェルを実行する
$ sudo lxc-attach -n debian-test
OS情報確認
# uname -a
Linux debian-test 6.1.0-26-cloud-arm64 #1 SMP Debian 6.1.112-1 (2024-09-30) aarch64 GNU/Linux
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
# cat /etc/debian_version
12.8
NWの設定確認
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:16:3e:47:e6:82 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.0.3.25/24 brd 10.0.3.255 scope global dynamic eth0
valid_lft 3292sec preferred_lft 3292sec
inet6 fe80::216:3eff:fe47:e682/64 scope link
valid_lft forever preferred_lft forever
# cat /etc/resolv.conf
nameserver 10.0.3.1
外部への接続確認もかねて nginx をインストールしてみる
# apt install --no-install-recommends nginx curl
ホスト側から接続テストしてみる
$ curl -I 10.0.3.25
HTTP/1.1 200 OK
Server: nginx/1.22.1
Date: Sun, 05 Jan 2025 05:57:31 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Sun, 05 Jan 2025 05:54:17 GMT
Connection: keep-alive
ETag: "677a1e89-267"
Accept-Ranges: bytes
コンテナ内のコマンドを指定して実行
起動しているコンテナ内のコマンドを指定して実行する。
$ sudo sudo lxc-attach -n debian-test -- ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:09 ? 00:00:00 /sbin/init
root 37 1 0 08:09 ? 00:00:00 /lib/systemd/systemd-journald
root 70 1 0 08:09 ? 00:00:00 dhclient -4 -v -i -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
root 107 1 0 08:09 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 108 1 0 08:09 pts/0 00:00:00 /sbin/agetty -o -p -- \u --noclear --keep-baud - 115200,38400,9600 vt220
root 109 1 0 08:09 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 110 109 0 08:09 ? 00:00:00 nginx: worker process
www-data 111 109 0 08:09 ? 00:00:00 nginx: worker process
root 113 0 0 08:10 pts/5 00:00:00 ps -ef
ホスト側からみたプロセスの一覧
$ ps -ef | grep 1115 | grep -v grep
root 1115 1110 0 08:09 ? 00:00:00 /sbin/init
root 1162 1115 0 08:09 ? 00:00:00 /lib/systemd/systemd-journald
root 1198 1115 0 08:09 ? 00:00:00 dhclient -4 -v -i -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
root 1235 1115 0 08:09 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 1236 1115 0 08:09 pts/0 00:00:00 /sbin/agetty -o -p -- \u --noclear --keep-baud - 115200,38400,9600 vt220
root 1237 1115 0 08:09 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
コンソールへの接続
$ sudo lxc-console --name debian-test -t 0
Connected to tty 0
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
debian-test login:
ユーザのパスワードを設定しないとログインできなさそう。
コンテナの停止
$ sudo lxc-stop -n debian-test
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
コンテナのプロセスを起動
停止状態のコンテナを起動して、コンテナのプロセスを起動する。
init 経由でプロセスが起動される。プロセスが終了すると、コンテナも終了する。
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
$ sudo sudo lxc-execute -n debian-test -- ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:58 ? 00:00:00 init
root 21 1 0 07:58 pts/0 00:00:00 ps -ef
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
凍結と解除
RUNNING の状態から凍結してみる
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test RUNNING 0 - 10.0.3.91 - false
$ sudo sudo lxc-freeze -n debian-test
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test FROZEN 0 - 10.0.3.91 - false
凍結解除
$ sudo sudo lxc-unfreeze -n debian-test
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test RUNNING 0 - 10.0.3.91 - false
freeze すればスナップショットが取得できそうなものだが、そうではない。
スナップショット取得は、STOPPEDの状態でないとできない。
スナップショット
前述のとおり、スナップショットは、STOPPEDの状態で取得する。
スナップショットの取得
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
$ sudo lxc-snapshot -n debian-test --list
No snapshots
$ sudo lxc-snapshot -n debian-test
取得したスナップショットを確認
$ sudo lxc-snapshot -n debian-test --list
snap0 (/var/lib/lxc/debian-test/snaps) 2025:01:05 08:00:57
$ sudo du -sh /var/lib/lxc/debian-test/snaps
373M /var/lib/lxc/debian-test/snaps
スナップショットの戻し
スナップショットの戻しも、STOPPED の状態で実施する。
比較のためにダミーファイル作成
$ sudo sudo lxc-execute -n debian-test -- touch /root/test
$ sudo sudo lxc-execute -n debian-test -- ls -l /root/test
-rw-r--r-- 1 root root 0 Jan 5 08:03 /root/test
スナップショットを戻す。確認するとダミーファイルは無くなっている。
$ sudo lxc-snapshot -n debian-test -r snap0
$ sudo sudo lxc-execute -n debian-test -- ls -l /root/test
ls: cannot access '/root/test': No such file or directory
スナップショットの削除
$ sudo lxc-snapshot -n debian-test -d snap0
$ sudo lxc-snapshot -n debian-test --list
No snapshots
$ sudo ls -l /var/lib/lxc/debian-test/snaps
total 0
コンテナのコピー
--snapshot
オプションをつけるとコピーする容量が少なくて済む。
--allowrunning
オプションを指定すると、RUNNING 状態でコピーを作成することもできるが、基本は STOPPED にしてコピー。
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
$ sudo lxc-copy -n debian-test -N debian-test-copy --snapshot
$ sudo lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
debian-test STOPPED 0 - - - false
debian-test-copy STOPPED 0 - - - false
--snapshot
を指定したので、コピーされた容量は最小限。
$ sudo ls -l /var/lib/lxc
total 8
drwxrwx--- 4 root root 4096 Jan 5 08:38 debian-test
drwxrwx--- 4 root root 4096 Jan 5 08:38 debian-test-copy
$ sudo ls -l /var/lib/lxc/debian-test-copy/
total 16
-rw-r----- 1 root root 808 Jan 5 08:38 config
-rw-r--r-- 1 root root 25 Jan 5 08:38 lxc_rdepends
drwxr-xr-x 4 root root 4096 Jan 5 08:38 overlay
drwxr-xr-x 2 root root 4096 Jan 5 08:38 rootfs
$ sudo du -sh /var/lib/lxc/debian-test-copy/
48K /var/lib/lxc/debian-test-copy/
コンテナの破棄
コンテナの破棄は、STOPPEDの状態で実施する
$ sudo lxc-destroy -n debian-test
コンテナを破棄しても、キャッシュは残る。次回のコンテナ作成は早くできる。
$ sudo du -sh /var/lib/lxc
4.0K /var/lib/lxc
$ sudo du -sh /var/cache/lxc
326M /var/cache/lxc
テンプレートをダウンロードしてコンテナ作成
/usr/share/lxc/templates 配下にテンプレートがインストールされていないディストリビューションは、テンプレートをダウンロードして、コンテナを作成することができる。
RockyLinux 9 のコンテナを作成してみる。
$ sudo lxc-create --name rockylinux-test -t download
Downloading the image index
---
DIST RELEASE ARCH VARIANT BUILD
---
almalinux 8 amd64 default 20250104_23:08
almalinux 8 arm64 default 20250104_23:08
almalinux 9 amd64 default 20250104_23:08
almalinux 9 arm64 default 20250104_23:08
alpine 3.18 amd64 default 20250105_13:00
alpine 3.18 arm64 default 20250105_13:01
alpine 3.18 armhf default 20250105_13:00
alpine 3.19 amd64 default 20250105_13:00
alpine 3.19 arm64 default 20250105_13:00
alpine 3.19 armhf default 20250105_13:00
alpine 3.20 amd64 default 20250105_13:00
alpine 3.20 arm64 default 20250105_13:01
alpine 3.20 armhf default 20250105_13:00
alpine 3.20 riscv64 default 20250105_13:03
alpine 3.21 amd64 default 20250105_13:00
alpine 3.21 arm64 default 20250105_13:00
alpine 3.21 armhf default 20250105_13:00
alpine 3.21 riscv64 default 20250105_13:02
alpine edge amd64 default 20250105_13:00
alpine edge arm64 default 20250105_13:00
alpine edge armhf default 20250105_13:02
alpine edge riscv64 default 20250105_13:04
alt Sisyphus amd64 default 20250105_01:17
alt Sisyphus arm64 default 20250105_01:17
alt p10 amd64 default 20250105_01:17
alt p10 arm64 default 20250105_01:17
alt p11 amd64 default 20250105_01:17
alt p11 arm64 default 20250105_01:17
amazonlinux 2 amd64 default 20250105_05:09
amazonlinux 2 arm64 default 20250105_05:09
amazonlinux 2023 amd64 default 20250105_05:09
archlinux current amd64 default 20250105_04:18
archlinux current arm64 default 20250105_04:18
busybox 1.36.1 amd64 default 20250105_06:00
busybox 1.36.1 arm64 default 20250105_06:00
centos 9-Stream amd64 default 20250105_07:08
centos 9-Stream arm64 default 20250105_07:08
debian bookworm amd64 default 20250105_05:24
debian bookworm arm64 default 20250105_05:24
debian bookworm armhf default 20250105_05:34
debian bullseye amd64 default 20250105_05:24
debian bullseye arm64 default 20250105_05:24
debian bullseye armhf default 20250105_05:24
debian buster amd64 default 20250105_05:24
debian buster arm64 default 20250105_05:24
debian buster armhf default 20250105_05:24
debian trixie amd64 default 20250105_05:24
debian trixie arm64 default 20250105_05:24
debian trixie riscv64 default 20250105_05:24
devuan beowulf amd64 default 20250105_11:50
devuan beowulf arm64 default 20250105_11:50
devuan chimaera amd64 default 20250105_11:50
devuan chimaera arm64 default 20250105_11:50
devuan daedalus amd64 default 20250105_11:50
devuan daedalus arm64 default 20250105_11:50
fedora 39 amd64 default 20250104_20:33
fedora 39 arm64 default 20250104_20:33
fedora 40 amd64 default 20250104_20:33
fedora 40 arm64 default 20250104_20:33
fedora 41 amd64 default 20250104_20:33
fedora 41 arm64 default 20250104_20:33
funtoo next amd64 default 20250105_16:45
kali current amd64 default 20250105_17:14
kali current arm64 default 20250105_17:14
mint ulyana amd64 default 20250105_08:51
mint ulyssa amd64 default 20250105_08:51
mint uma amd64 default 20250105_08:51
mint una amd64 default 20250105_08:51
mint vanessa amd64 default 20250105_08:51
mint vera amd64 default 20250105_08:51
mint victoria amd64 default 20250105_08:51
mint virginia amd64 default 20250105_08:51
mint wilma amd64 default 20250105_08:51
nixos 24.05 amd64 default 20250105_01:01
nixos 24.05 arm64 default 20250105_01:00
nixos 24.11 amd64 default 20250105_01:02
nixos 24.11 arm64 default 20250105_01:02
nixos unstable amd64 default 20250105_01:00
nixos unstable arm64 default 20250105_01:00
openeuler 20.03 amd64 default 20241230_15:48
openeuler 20.03 arm64 default 20241230_15:48
openeuler 22.03 amd64 default 20241230_15:48
openeuler 22.03 arm64 default 20241230_15:48
openeuler 24.03 amd64 default 20241230_15:48
openeuler 24.03 arm64 default 20241230_15:48
openeuler 24.09 amd64 default 20241230_15:48
openeuler 24.09 arm64 default 20241230_15:48
opensuse 15.5 amd64 default 20250104_04:20
opensuse 15.5 arm64 default 20250104_04:20
opensuse 15.6 amd64 default 20250104_04:20
opensuse 15.6 arm64 default 20250104_04:20
opensuse tumbleweed amd64 default 20250104_04:20
opensuse tumbleweed arm64 default 20250104_04:20
openwrt 21.02 amd64 default 20250105_11:57
openwrt 21.02 arm64 default 20250105_11:57
openwrt 22.03 amd64 default 20250105_11:57
openwrt 22.03 arm64 default 20250105_11:57
openwrt 23.05 amd64 default 20250105_11:57
openwrt 23.05 arm64 default 20250105_11:57
openwrt snapshot amd64 default 20250105_11:57
openwrt snapshot arm64 default 20250105_11:57
oracle 7 amd64 default 20250105_07:46
oracle 7 arm64 default 20250105_07:57
oracle 8 amd64 default 20250105_07:46
oracle 8 arm64 default 20250105_07:57
oracle 9 amd64 default 20250105_07:46
oracle 9 arm64 default 20250105_07:57
plamo 7.x amd64 default 20250105_01:33
plamo 8.x amd64 default 20250105_01:33
rockylinux 8 amd64 default 20250105_02:12
rockylinux 8 arm64 default 20250105_02:12
rockylinux 9 amd64 default 20250105_02:12
rockylinux 9 arm64 default 20250105_02:12
slackware 15.0 amd64 default 20250104_23:13
slackware current amd64 default 20250104_23:13
springdalelinux 7 amd64 default 20250105_06:38
springdalelinux 8 amd64 default 20250105_06:38
springdalelinux 9 amd64 default 20250105_06:38
ubuntu focal amd64 default 20250105_07:42
ubuntu focal arm64 default 20250105_07:42
ubuntu focal armhf default 20250105_07:42
ubuntu focal riscv64 default 20250105_09:36
ubuntu jammy amd64 default 20250105_07:42
ubuntu jammy arm64 default 20250105_07:42
ubuntu jammy armhf default 20250105_07:42
ubuntu jammy riscv64 default 20250105_10:17
ubuntu noble amd64 default 20250105_07:42
ubuntu noble arm64 default 20250105_07:42
ubuntu noble armhf default 20250105_08:06
ubuntu noble riscv64 default 20250105_09:13
ubuntu oracular amd64 default 20250105_07:42
ubuntu oracular arm64 default 20250105_07:42
ubuntu oracular armhf default 20250105_07:42
ubuntu oracular riscv64 default 20250105_08:19
voidlinux current amd64 default 20250105_17:10
voidlinux current arm64 default 20250105_17:10
---
Distribution:
rockylinux
Release:
9
Architecture:
arm64
Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs
---
You just created a Rockylinux 9 aarch64 (20250105_02:12) container.
作成されたコンテナを起動してみる。
$ sudo lxc-ls -f --filter rockylinux
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
rockylinux-test STOPPED 0 - - - false
$ sudo lxc-start --name rockylinux-test -d
$ sudo lxc-ls -f --filter rockylinux
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
rockylinux-test RUNNING 0 - 10.0.3.143 - false
疎通確認をかねて、nginx をインストールしてみる。
$ sudo lxc-attach --name rockylinux-test
# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.5 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.5"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.5 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
VENDOR_NAME="RESF"
VENDOR_URL="https://resf.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.5"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.5"
# dnf update && dnf install -y nginx
nginx を起動して、外部から疎通確認してみる。
$ sudo lxc-attach --name rockylinux-test -- systemctl start nginx
$ curl -I 10.0.3.143
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Sun, 05 Jan 2025 21:07:47 GMT
Content-Type: text/html
Content-Length: 7620
Last-Modified: Wed, 21 Feb 2024 13:12:33 GMT
Connection: keep-alive
ETag: "65d5f6c1-1dc4"
Accept-Ranges: bytes
起動したコンテナの情報
$ sudo lxc-info -n rockylinux-test
Name: rockylinux-test
State: RUNNING
PID: 2136
IP: 10.0.3.143
Link: vethcNkHzi
TX bytes: 127.29 KiB
RX bytes: 11.01 MiB
Total bytes: 11.13 MiB
$ ps -ef | grep 2136 | grep -v grep
root 2136 2131 0 20:58 ? 00:00:00 /sbin/init
root 2250 2136 0 20:58 ? 00:00:00 /usr/lib/systemd/systemd-journald
81 2273 2136 0 20:58 ? 00:00:00 /usr/bin/dbus-broker-launch --scope system --audit
root 2276 2136 0 20:58 ? 00:00:00 /usr/lib/systemd/systemd-logind
root 2279 2136 0 20:58 ? 00:00:00 /usr/sbin/NetworkManager --no-daemon
root 2296 2136 0 20:58 pts/0 00:00:00 /sbin/agetty -o -p -- \u --noclear --keep-baud - 115200,38400,9600 vt220
root 2302 2136 0 20:58 ? 00:00:00 /usr/sbin/crond -n
root 2321 2136 0 20:58 ? 00:00:00 /usr/sbin/rsyslogd -n
root 2542 2136 0 21:07 ? 00:00:00 nginx: master process /usr/sbin/nginx
コンソール接続
$ sudo lxc-console -n rockylinux-test -t 0
Connected to tty 0
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
rockylinux-test login:
などと、テンプレートをダウンロードして作成したコンテナも、変わりなく利用することができる。
Discussion