Incus をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
ドキュメント [[https://linuxcontainers.org/>+https://linu...
github [[https://github.com/lxc/incus>+https://github.com...
incusでcs[[Incus/cryoSPARC]]
LXDのフォーク.
コンテナ技術なのですが、Docker は「軽量なアプリ実行」、In...
ここでは Incus を簡単に導入してみる.
#code(nonumber){{
[root@incus ~]# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)
[root@incus ~]# dnf copr enable neil/incus
[root@incus ~]# dnf install epel-release
[root@incus ~]# dnf config-manager --enable crb
[root@incus ~]# dnf install incus incus-tools
}}
ここで新しいgroupが作られます
#code(nonumber){{
[root@incus ~]# cat /etc/group
:
incus-admin:x:995:
incus:x:994:
[root@incus ~]#
}}
っでincusの daemon を起動させます.
#code(nonumber){{
[root@incus ~]# systemctl enable incus --now
[root@incus ~]# systemctl status incus
● incus.service - Incus - Daemon
Loaded: loaded (/usr/lib/systemd/system/incus.servic...
Active: active (running) since Tue 2026-03-03 07:02:...
TriggeredBy: ● incus.socket
Docs: man:incusd(1)
Process: 3960 ExecStartPost=/usr/libexec/incus/incusd...
Main PID: 3959 (incusd)
Tasks: 16
Memory: 35.8M (peak: 57.6M)
CPU: 217ms
CGroup: /system.slice/incus.service
mq3959 /usr/libexec/incus/incusd --group inc...
Mar 03 07:02:40 incus systemd[1]: Starting Incus - Daemon...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:41 incus systemd[1]: Started Incus - Daemon.
[root@incus ~]#
[root@incus ~]# incus version
Client version: 6.8
Server version: 6.8
[root@incus ~]#
}}
incusのストレージプールを用意します。
ここではフィルシステムをそのまま使います. zfsとかbtrfsの...
#code(nonumber){{
parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) quit
mkfs.ext4 -m 0 /dev/sdb1
e2label /dev/sdb1 incus
echo "LALABEL=incus /incus ext4 defaults 0 0" >> /etc/fstab
mkdir /incus
systemctl daemon-reload
mount -a
}}
っで構築開始
#code(nonumber){{
[root@incus ~]# mkdir /incus/default -p
[root@incus ~]# incus admin init
}}
以降下記のような設問が出てきます。ここでは下記のようにし...
|BGCOLOR(YELLOW):質問|BGCOLOR(YELLOW):解答|BGCOLOR(YELLOW...
|Would you like to use clustering? (yes/no) [default=no]:...
|Do you want to configure a new storage pool? (yes/no) [d...
|Name of the new storage pool [default=default]:|default|...
|Name of the storage backend to use (dir, zfs, lvm, ceph,...
|Where should this storage pool store its data? [default=...
|Would you like to create a new local network bridge? (ye...
|Would you like to use an existing bridge or host interfa...
|Would you like the server to be available over the netwo...
|Would you like stale cached images to be updated automat...
|Would you like a YAML "init" preseed to be printed? (yes...
構築が完了すると /incus/default は下記のようになります
#code(nonumber){{
[root@incus ~]# ls -l /incus/default/
drwx--x--x. 2 root root 6 Mar 3 07:06 buckets
drwx--x--x. 2 root root 6 Mar 3 07:06 containers
drwx--x--x. 2 root root 6 Mar 3 07:06 containers-snapshots
drwx--x--x. 2 root root 6 Mar 3 07:06 custom
drwx--x--x. 2 root root 6 Mar 3 07:06 custom-snapshots
drwx--x--x. 2 root root 6 Mar 3 07:06 images
drwx--x--x. 2 root root 6 Mar 3 07:06 virtual-machines
drwx--x--x. 2 root root 6 Mar 3 07:06 virtual-machines-s...
[root@incus ~]#
}}
***ネットワークの準備 [#d777a55e]
#code(nonumber){{
[root@incus ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
[root@incus ~]# modprobe macvlan
[root@incus ~]# incus network create pubnet --type=macvla...
[root@incus ~]# incus network list
+---------+----------+---------+------+------+-----------...
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTIO...
+---------+----------+---------+------+------+-----------...
| enp6s18 | physical | NO | | | ...
+---------+----------+---------+------+------+-----------...
| lo | loopback | NO | | | ...
+---------+----------+---------+------+------+-----------...
| pubnet | macvlan | YES | | | ...
+---------+----------+---------+------+------+-----------...
[root@incus ~]#
}}
あと再起動時にmacvlanをロードさせるために
#code(nonumber){{
[root@incus ~]# echo macvlan | tee /etc/modules-load.d/ma...
}}
とします
***incus管理者アカウントを作成します [#nd325b1d]
複数の管理者アカウントを用意しても構いません. ここでは1...
#code(nonumber){{
useradd -s /bin/bash incus-supervisor
}}
ローカルでユーザを作成するとUID/GIDマッピングが自動で作れ...
#code(nonumber){{
[root@incus ~]# cat /etc/subuid
root:1000000:65536
incus-supervisor:1100000:65536
[root@incus ~]# cat /etc/subgid
root:1000000:65536
incus-supervisor:1100000:65536
[root@incus ~]#
}}
一端incusを再起動させて、次に作った管理者アカウント「incu...
#code(nonumber){{
[root@incus ~]# systemctl restart incus
[root@incus ~]# usermod -aG incus-admin incus-supervisor
[root@incus ~]# grep incus-admin /etc/group
incus-admin:x:995:incus-supervisor
[root@incus ~]#
}}
***コンテナ作成 [#q209e896]
作成した管理者アカウント「incus-supervisor」でコンテナ作...
現在のコンテナの状態は「incus list」で得られます
#code(nonumber){{
[incus-supervisor@incus ~]$ incus list
To start your first container, try: incus launch images:u...
Or for a virtual machine: incus launch images:ubuntu/22.0...
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
[incus-supervisor@incus ~]$
}}
っでコンテナを作ります
#code(nonumber){{
[incus-supervisor@incus ~]$ incus launch images:rockylinu...
Launching myapp1
[incus-supervisor@incus ~]$
[incus-supervisor@incus ~]$ incus list
+--------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+------+------+-----------+-----------+
| myapp1 | RUNNING | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
[incus-supervisor@incus ~]$
}}
残念なことに「IPV4」の値がないので、このコンテナは外部と...
原因は使用したrockylinux9のイメージが超軽量級で用意されて...
っで
#code(nonumber){{
[incus-supervisor@incus ~]$ incus exec myapp1 -- ip link ...
[incus-supervisor@incus ~]$ incus exec myapp1 -- dhclient...
}}
っとすればdhcp経由になりますが、ipが付与される。
そして「incus list」とすると
#code(nonumber){{
[incus-supervisor@incus ~]$ incus list
+--------+---------+----------------------+------+-------...
| NAME | STATE | IPV4 | IPV6 | TYPE...
+--------+---------+----------------------+------+-------...
| myapp1 | RUNNING | 192.168.0.222 (eth0) | | CONTAI...
+--------+---------+----------------------+------+-------...
[incus-supervisor@incus ~]$
}}
っが「incus restart myapp1」とコンテナを再起動すると再度i...
それを防ぐには「incus exec myapp1 -- bash」でマシンに入っ...
***コンテナ操作 [#m1ea018c]
#code(nonumber){{
[incus-supervisor@incus ~]$ incus stop myapp1 *強制...
[incus-supervisor@incus ~]$ incus start myapp1
[incus-supervisor@incus ~]$ incus restart myapp1
[incus-supervisor@incus ~]$ incus snapshot create myapp1 ...
[incus-supervisor@incus ~]$ incus snapshot list myapp1 ...
+-------------+----------------------+------------+------...
| NAME | TAKEN AT | EXPIRES AT | STATE...
+-------------+----------------------+------------+------...
| myapp1-orig | 2025/09/23 03:48 JST | | NO ...
+-------------+----------------------+------------+------...
[incus-supervisor@incus ~]$ incus snapshot restore myapp1...
[incus-supervisor@incus ~]$ incus snapshot delete myapp1 ...
[incus-supervisor@incus ~]$ incus snapshot list myapp1
+------+----------+------------+----------+
| NAME | TAKEN AT | EXPIRES AT | STATEFUL |
+------+----------+------------+----------+
[incus-supervisor@incus ~]$ incus export myapp1 ./myapp1-...
[incus-supervisor@incus ~]$ ls -hl ./myapp1-backup.tar.gz
-rw-r--r--. 1 incus-supervisor incus-supervisor 152M Sep ...
[incus-supervisor@incus ~]$ incus delete myapp1
[incus-supervisor@incus ~]$ incus list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
[incus-supervisor@incus ~]$ incus import ./myapp1-backup....
[incus-supervisor@incus ~]$ incus list
+---------------+---------+------+------+-----------+----...
| NAME | STATE | IPV4 | IPV6 | TYPE | SNA...
+---------------+---------+------+------+-----------+----...
| myapp1-backup | STOPPED | | | CONTAINER | 0 ...
+---------------+---------+------+------+-----------+----...
[incus-supervisor@incus ~]$ incus rename myapp1-backup my...
[incus-supervisor@incus ~]$ incus copy myapp1 myapp2 ...
[incus-supervisor@incus ~]$ incus list
+--------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+------+------+-----------+-----------+
| myapp1 | STOPPED | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
| myapp2 | STOPPED | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
}}
***もしbridgeデバイスがあるなら [#qe007642]
#code(nonumber){{
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
3: nm-bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
}}
なら「incus network list」の値は下記になります
#code(nonumber){{
[incus-supervisor@incus ~]$ incus network list
+-----------+----------+---------+------+------+---------...
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPT...
+-----------+----------+---------+------+------+---------...
| enp6s18 | physical | NO | | | ...
+-----------+----------+---------+------+------+---------...
| lo | loopback | NO | | | ...
+-----------+----------+---------+------+------+---------...
| nm-bridge | bridge | NO | | | ...
+-----------+----------+---------+------+------+---------...
[root@incus ~]#
}}
プロファイルを作成
#code(nonumber){{
[incus-supervisor@incus ~]$ incus profile create app-prof...
[incus-supervisor@incus ~]$ incus profile edit app-profile
config: {}
description: cryoSAPRC master node
devices:
root:
path: /
pool: default
type: disk
name: app-profile
[incus-supervisor@incus ~]$
(コンテナ作成)
[incus-supervisor@incus ~]$ incus launch images:rockylinu...
(nic付与)
[incus-supervisor@incus ~]$ incus config device add myapp...
}}
として構築します
***コンテナ内でのnfs-mount [#h56f8d70]
コンテナを特権モードで動かせば、コンテナ内でも直接mountで...
でも、ここでは「ホスト」でrootがnfs-mountした場所を使うよ...
#code(nonumber){{
[root@incus ~]# dnf install nfs-utils -y
[root@incus ~]# mkdir /Public
[root@incus ~]# mount qnap:/Public /Public
[root@incus ~]# df -ThF nfs4
Filesystem Type Size Used Avail Use% Mounted on
qnap:/Public nfs4 15T 13T 2.2T 86% /Public
[root@incus ~]#
}}
管理者アカウントになって nfs を張る
#code(nonumber){{
[root@incus ~]# su - incus-supervisor
[incus-supervisor@incus ~]$ incus start myapp1
[incus-supervisor@incus ~]$ incus list
+--------+---------+----------------------+------+-------...
| NAME | STATE | IPV4 | IPV6 | TYPE...
+--------+---------+----------------------+------+-------...
| myapp1 | RUNNING | 192.168.0.222 (eth0) | | CONTAI...
+--------+---------+----------------------+------+-------...
| myapp2 | STOPPED | | | CONTAI...
+--------+---------+----------------------+------+-------...
[incus-supervisor@incus ~]$
[incus-supervisor@incus ~]$ incus config device add myapp...
[incus-supervisor@incus ~]$ incus exec myapp1 -- bash
[root@myapp1 ~]# df -ThF nfs4
Filesystem Type Size Used Avail Use% Mounted on
qnap:/Public nfs4 15T 13T 2.2T 86% /mnt/nfs
[root@myapp1 ~]#
}}
***コンテナへssh接続 [#n8de99a4]
rockylinux9イメージでは最小構成なので初めから openssh-ser...
#code(nonumber){{
[incus-supervisor@incus ~]$ incus exec myapp1 -- bash
[root@myapp1 ~]# dnf install openssh-server
[root@myapp1 ~]# vi /etc/ssh/sshd_config
:
PermitRootLogin yes
:
[root@myapp1 ~]#
[root@myapp1 ~]# systemctl restart sshd
[root@myapp1 ~]# passwd <-- ここではr...
}}
っでホストではない別のマシンから入ってみた
#code(nonumber){{
[root@rockylinux9 ~]# ssh -l root 192.168.0.222
The authenticity of host '192.168.0.222 (192.168.0.222)' ...
ED25519 key fingerprint is SHA256:VpXNDwbOSjLgvaxLi8hB1TE...
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fin...
Warning: Permanently added '192.168.0.222' (ED25519) to t...
root@192.168.0.222's password:
Last login: Tue Sep 23 03:07:10 2025 from 192.168.0.3
[root@myapp1 ~]#
}}
と行けた。
だが、コンテナを主催するホストから接続を試みると
#code(nonumber){{
[incus-supervisor@incus ~]$ ssh -l root 192.168.0.222
ssh: connect to host 192.168.0.222 port 22: No route to h...
You can find some explanations for typical errors at this...
https://red.ht/support_rhel_ssh
[incus-supervisor@incus ~]$
}}
と弾かれます。
それへの対処としてはホストの特定ポートに特定のホストの22...
#code(nonumber){{
incus config device add myapp1 sshproxy proxy \
listen=tcp:0.0.0.0:2222 \
connect=tcp:127.0.0.1:22
incus config device add myapp2 sshproxy proxy \
listen=tcp:0.0.0.0:2223 \
connect=tcp:127.0.0.1:22
}}
コンテナ myapp1 には localhost:2222 が コンテナの22にアサ...
コンテナ myapp2 には localhost:2223 が コンテナの22にアサ...
って感じにします。
#code(nonumber){{
[incus-supervisor@incus ~]$ incus config device add myapp...
listen=tcp:0.0.0.0:2222 \
connect=tcp:127.0.0.1:22
Device sshproxy added to myapp1
[incus-supervisor@incus ~]$
(確認)
[incus-supervisor@incus ~]$ incus config device list myapp1
eth0
mynfs
sshproxy
[incus-supervisor@incus ~]$
}}
っで接続してみる
#code(nonumber){{
[incus-supervisor@incus ~]$ ssh -l root -p 2222 localhost
root@localhost's password:
Last login: Tue Sep 23 11:42:35 2025 from 127.0.0.1
[root@myapp1 ~]#
}}
となる。
***コンテナのサイズ [#e1c92065]
ここでは「dir」とファイルシステムをそのまま使っていますが...
そして「dir」だと容量制限が付けられないようで、zfs, btrfs...
***メモ [#f280cee2]
動作は極めて良好。再起動も滅茶苦茶はやい
終了行:
ドキュメント [[https://linuxcontainers.org/>+https://linu...
github [[https://github.com/lxc/incus>+https://github.com...
incusでcs[[Incus/cryoSPARC]]
LXDのフォーク.
コンテナ技術なのですが、Docker は「軽量なアプリ実行」、In...
ここでは Incus を簡単に導入してみる.
#code(nonumber){{
[root@incus ~]# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)
[root@incus ~]# dnf copr enable neil/incus
[root@incus ~]# dnf install epel-release
[root@incus ~]# dnf config-manager --enable crb
[root@incus ~]# dnf install incus incus-tools
}}
ここで新しいgroupが作られます
#code(nonumber){{
[root@incus ~]# cat /etc/group
:
incus-admin:x:995:
incus:x:994:
[root@incus ~]#
}}
っでincusの daemon を起動させます.
#code(nonumber){{
[root@incus ~]# systemctl enable incus --now
[root@incus ~]# systemctl status incus
● incus.service - Incus - Daemon
Loaded: loaded (/usr/lib/systemd/system/incus.servic...
Active: active (running) since Tue 2026-03-03 07:02:...
TriggeredBy: ● incus.socket
Docs: man:incusd(1)
Process: 3960 ExecStartPost=/usr/libexec/incus/incusd...
Main PID: 3959 (incusd)
Tasks: 16
Memory: 35.8M (peak: 57.6M)
CPU: 217ms
CGroup: /system.slice/incus.service
mq3959 /usr/libexec/incus/incusd --group inc...
Mar 03 07:02:40 incus systemd[1]: Starting Incus - Daemon...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:40 incus incusd[3959]: time="2026-03-03T07:0...
Mar 03 07:02:41 incus systemd[1]: Started Incus - Daemon.
[root@incus ~]#
[root@incus ~]# incus version
Client version: 6.8
Server version: 6.8
[root@incus ~]#
}}
incusのストレージプールを用意します。
ここではフィルシステムをそのまま使います. zfsとかbtrfsの...
#code(nonumber){{
parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) quit
mkfs.ext4 -m 0 /dev/sdb1
e2label /dev/sdb1 incus
echo "LALABEL=incus /incus ext4 defaults 0 0" >> /etc/fstab
mkdir /incus
systemctl daemon-reload
mount -a
}}
っで構築開始
#code(nonumber){{
[root@incus ~]# mkdir /incus/default -p
[root@incus ~]# incus admin init
}}
以降下記のような設問が出てきます。ここでは下記のようにし...
|BGCOLOR(YELLOW):質問|BGCOLOR(YELLOW):解答|BGCOLOR(YELLOW...
|Would you like to use clustering? (yes/no) [default=no]:...
|Do you want to configure a new storage pool? (yes/no) [d...
|Name of the new storage pool [default=default]:|default|...
|Name of the storage backend to use (dir, zfs, lvm, ceph,...
|Where should this storage pool store its data? [default=...
|Would you like to create a new local network bridge? (ye...
|Would you like to use an existing bridge or host interfa...
|Would you like the server to be available over the netwo...
|Would you like stale cached images to be updated automat...
|Would you like a YAML "init" preseed to be printed? (yes...
構築が完了すると /incus/default は下記のようになります
#code(nonumber){{
[root@incus ~]# ls -l /incus/default/
drwx--x--x. 2 root root 6 Mar 3 07:06 buckets
drwx--x--x. 2 root root 6 Mar 3 07:06 containers
drwx--x--x. 2 root root 6 Mar 3 07:06 containers-snapshots
drwx--x--x. 2 root root 6 Mar 3 07:06 custom
drwx--x--x. 2 root root 6 Mar 3 07:06 custom-snapshots
drwx--x--x. 2 root root 6 Mar 3 07:06 images
drwx--x--x. 2 root root 6 Mar 3 07:06 virtual-machines
drwx--x--x. 2 root root 6 Mar 3 07:06 virtual-machines-s...
[root@incus ~]#
}}
***ネットワークの準備 [#d777a55e]
#code(nonumber){{
[root@incus ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
[root@incus ~]# modprobe macvlan
[root@incus ~]# incus network create pubnet --type=macvla...
[root@incus ~]# incus network list
+---------+----------+---------+------+------+-----------...
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTIO...
+---------+----------+---------+------+------+-----------...
| enp6s18 | physical | NO | | | ...
+---------+----------+---------+------+------+-----------...
| lo | loopback | NO | | | ...
+---------+----------+---------+------+------+-----------...
| pubnet | macvlan | YES | | | ...
+---------+----------+---------+------+------+-----------...
[root@incus ~]#
}}
あと再起動時にmacvlanをロードさせるために
#code(nonumber){{
[root@incus ~]# echo macvlan | tee /etc/modules-load.d/ma...
}}
とします
***incus管理者アカウントを作成します [#nd325b1d]
複数の管理者アカウントを用意しても構いません. ここでは1...
#code(nonumber){{
useradd -s /bin/bash incus-supervisor
}}
ローカルでユーザを作成するとUID/GIDマッピングが自動で作れ...
#code(nonumber){{
[root@incus ~]# cat /etc/subuid
root:1000000:65536
incus-supervisor:1100000:65536
[root@incus ~]# cat /etc/subgid
root:1000000:65536
incus-supervisor:1100000:65536
[root@incus ~]#
}}
一端incusを再起動させて、次に作った管理者アカウント「incu...
#code(nonumber){{
[root@incus ~]# systemctl restart incus
[root@incus ~]# usermod -aG incus-admin incus-supervisor
[root@incus ~]# grep incus-admin /etc/group
incus-admin:x:995:incus-supervisor
[root@incus ~]#
}}
***コンテナ作成 [#q209e896]
作成した管理者アカウント「incus-supervisor」でコンテナ作...
現在のコンテナの状態は「incus list」で得られます
#code(nonumber){{
[incus-supervisor@incus ~]$ incus list
To start your first container, try: incus launch images:u...
Or for a virtual machine: incus launch images:ubuntu/22.0...
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
[incus-supervisor@incus ~]$
}}
っでコンテナを作ります
#code(nonumber){{
[incus-supervisor@incus ~]$ incus launch images:rockylinu...
Launching myapp1
[incus-supervisor@incus ~]$
[incus-supervisor@incus ~]$ incus list
+--------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+------+------+-----------+-----------+
| myapp1 | RUNNING | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
[incus-supervisor@incus ~]$
}}
残念なことに「IPV4」の値がないので、このコンテナは外部と...
原因は使用したrockylinux9のイメージが超軽量級で用意されて...
っで
#code(nonumber){{
[incus-supervisor@incus ~]$ incus exec myapp1 -- ip link ...
[incus-supervisor@incus ~]$ incus exec myapp1 -- dhclient...
}}
っとすればdhcp経由になりますが、ipが付与される。
そして「incus list」とすると
#code(nonumber){{
[incus-supervisor@incus ~]$ incus list
+--------+---------+----------------------+------+-------...
| NAME | STATE | IPV4 | IPV6 | TYPE...
+--------+---------+----------------------+------+-------...
| myapp1 | RUNNING | 192.168.0.222 (eth0) | | CONTAI...
+--------+---------+----------------------+------+-------...
[incus-supervisor@incus ~]$
}}
っが「incus restart myapp1」とコンテナを再起動すると再度i...
それを防ぐには「incus exec myapp1 -- bash」でマシンに入っ...
***コンテナ操作 [#m1ea018c]
#code(nonumber){{
[incus-supervisor@incus ~]$ incus stop myapp1 *強制...
[incus-supervisor@incus ~]$ incus start myapp1
[incus-supervisor@incus ~]$ incus restart myapp1
[incus-supervisor@incus ~]$ incus snapshot create myapp1 ...
[incus-supervisor@incus ~]$ incus snapshot list myapp1 ...
+-------------+----------------------+------------+------...
| NAME | TAKEN AT | EXPIRES AT | STATE...
+-------------+----------------------+------------+------...
| myapp1-orig | 2025/09/23 03:48 JST | | NO ...
+-------------+----------------------+------------+------...
[incus-supervisor@incus ~]$ incus snapshot restore myapp1...
[incus-supervisor@incus ~]$ incus snapshot delete myapp1 ...
[incus-supervisor@incus ~]$ incus snapshot list myapp1
+------+----------+------------+----------+
| NAME | TAKEN AT | EXPIRES AT | STATEFUL |
+------+----------+------------+----------+
[incus-supervisor@incus ~]$ incus export myapp1 ./myapp1-...
[incus-supervisor@incus ~]$ ls -hl ./myapp1-backup.tar.gz
-rw-r--r--. 1 incus-supervisor incus-supervisor 152M Sep ...
[incus-supervisor@incus ~]$ incus delete myapp1
[incus-supervisor@incus ~]$ incus list
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
[incus-supervisor@incus ~]$ incus import ./myapp1-backup....
[incus-supervisor@incus ~]$ incus list
+---------------+---------+------+------+-----------+----...
| NAME | STATE | IPV4 | IPV6 | TYPE | SNA...
+---------------+---------+------+------+-----------+----...
| myapp1-backup | STOPPED | | | CONTAINER | 0 ...
+---------------+---------+------+------+-----------+----...
[incus-supervisor@incus ~]$ incus rename myapp1-backup my...
[incus-supervisor@incus ~]$ incus copy myapp1 myapp2 ...
[incus-supervisor@incus ~]$ incus list
+--------+---------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+------+------+-----------+-----------+
| myapp1 | STOPPED | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
| myapp2 | STOPPED | | | CONTAINER | 0 |
+--------+---------+------+------+-----------+-----------+
}}
***もしbridgeデバイスがあるなら [#qe007642]
#code(nonumber){{
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue sta...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qd...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
3: nm-bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
link/ether bc:24:11:c5:d2:99 brd ff:ff:ff:ff:ff:ff
}}
なら「incus network list」の値は下記になります
#code(nonumber){{
[incus-supervisor@incus ~]$ incus network list
+-----------+----------+---------+------+------+---------...
| NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPT...
+-----------+----------+---------+------+------+---------...
| enp6s18 | physical | NO | | | ...
+-----------+----------+---------+------+------+---------...
| lo | loopback | NO | | | ...
+-----------+----------+---------+------+------+---------...
| nm-bridge | bridge | NO | | | ...
+-----------+----------+---------+------+------+---------...
[root@incus ~]#
}}
プロファイルを作成
#code(nonumber){{
[incus-supervisor@incus ~]$ incus profile create app-prof...
[incus-supervisor@incus ~]$ incus profile edit app-profile
config: {}
description: cryoSAPRC master node
devices:
root:
path: /
pool: default
type: disk
name: app-profile
[incus-supervisor@incus ~]$
(コンテナ作成)
[incus-supervisor@incus ~]$ incus launch images:rockylinu...
(nic付与)
[incus-supervisor@incus ~]$ incus config device add myapp...
}}
として構築します
***コンテナ内でのnfs-mount [#h56f8d70]
コンテナを特権モードで動かせば、コンテナ内でも直接mountで...
でも、ここでは「ホスト」でrootがnfs-mountした場所を使うよ...
#code(nonumber){{
[root@incus ~]# dnf install nfs-utils -y
[root@incus ~]# mkdir /Public
[root@incus ~]# mount qnap:/Public /Public
[root@incus ~]# df -ThF nfs4
Filesystem Type Size Used Avail Use% Mounted on
qnap:/Public nfs4 15T 13T 2.2T 86% /Public
[root@incus ~]#
}}
管理者アカウントになって nfs を張る
#code(nonumber){{
[root@incus ~]# su - incus-supervisor
[incus-supervisor@incus ~]$ incus start myapp1
[incus-supervisor@incus ~]$ incus list
+--------+---------+----------------------+------+-------...
| NAME | STATE | IPV4 | IPV6 | TYPE...
+--------+---------+----------------------+------+-------...
| myapp1 | RUNNING | 192.168.0.222 (eth0) | | CONTAI...
+--------+---------+----------------------+------+-------...
| myapp2 | STOPPED | | | CONTAI...
+--------+---------+----------------------+------+-------...
[incus-supervisor@incus ~]$
[incus-supervisor@incus ~]$ incus config device add myapp...
[incus-supervisor@incus ~]$ incus exec myapp1 -- bash
[root@myapp1 ~]# df -ThF nfs4
Filesystem Type Size Used Avail Use% Mounted on
qnap:/Public nfs4 15T 13T 2.2T 86% /mnt/nfs
[root@myapp1 ~]#
}}
***コンテナへssh接続 [#n8de99a4]
rockylinux9イメージでは最小構成なので初めから openssh-ser...
#code(nonumber){{
[incus-supervisor@incus ~]$ incus exec myapp1 -- bash
[root@myapp1 ~]# dnf install openssh-server
[root@myapp1 ~]# vi /etc/ssh/sshd_config
:
PermitRootLogin yes
:
[root@myapp1 ~]#
[root@myapp1 ~]# systemctl restart sshd
[root@myapp1 ~]# passwd <-- ここではr...
}}
っでホストではない別のマシンから入ってみた
#code(nonumber){{
[root@rockylinux9 ~]# ssh -l root 192.168.0.222
The authenticity of host '192.168.0.222 (192.168.0.222)' ...
ED25519 key fingerprint is SHA256:VpXNDwbOSjLgvaxLi8hB1TE...
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fin...
Warning: Permanently added '192.168.0.222' (ED25519) to t...
root@192.168.0.222's password:
Last login: Tue Sep 23 03:07:10 2025 from 192.168.0.3
[root@myapp1 ~]#
}}
と行けた。
だが、コンテナを主催するホストから接続を試みると
#code(nonumber){{
[incus-supervisor@incus ~]$ ssh -l root 192.168.0.222
ssh: connect to host 192.168.0.222 port 22: No route to h...
You can find some explanations for typical errors at this...
https://red.ht/support_rhel_ssh
[incus-supervisor@incus ~]$
}}
と弾かれます。
それへの対処としてはホストの特定ポートに特定のホストの22...
#code(nonumber){{
incus config device add myapp1 sshproxy proxy \
listen=tcp:0.0.0.0:2222 \
connect=tcp:127.0.0.1:22
incus config device add myapp2 sshproxy proxy \
listen=tcp:0.0.0.0:2223 \
connect=tcp:127.0.0.1:22
}}
コンテナ myapp1 には localhost:2222 が コンテナの22にアサ...
コンテナ myapp2 には localhost:2223 が コンテナの22にアサ...
って感じにします。
#code(nonumber){{
[incus-supervisor@incus ~]$ incus config device add myapp...
listen=tcp:0.0.0.0:2222 \
connect=tcp:127.0.0.1:22
Device sshproxy added to myapp1
[incus-supervisor@incus ~]$
(確認)
[incus-supervisor@incus ~]$ incus config device list myapp1
eth0
mynfs
sshproxy
[incus-supervisor@incus ~]$
}}
っで接続してみる
#code(nonumber){{
[incus-supervisor@incus ~]$ ssh -l root -p 2222 localhost
root@localhost's password:
Last login: Tue Sep 23 11:42:35 2025 from 127.0.0.1
[root@myapp1 ~]#
}}
となる。
***コンテナのサイズ [#e1c92065]
ここでは「dir」とファイルシステムをそのまま使っていますが...
そして「dir」だと容量制限が付けられないようで、zfs, btrfs...
***メモ [#f280cee2]
動作は極めて良好。再起動も滅茶苦茶はやい
ページ名:
1