🦕

Debian12 で LXC を試す

2025/01/12に公開

環境

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:

などと、テンプレートをダウンロードして作成したコンテナも、変わりなく利用することができる。

GitHubで編集を提案

Discussion