Debian 11 を再インストールしました。 LXC に関して Debian 10 システムのジョブ設定をコピーしました。私がlxcuser
望む別su
のユーザーを使用していますlxc-start
。
構成、~/.config/lxc/default.conf
lxc.idmap = u 0 165536 65536
lxc.idmap = g 0 165536 65536
lxc.apparmor.profile = unconfined
lxc.mount.auto = proc:mixed sys:ro cgroup:mixed
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:FF:xx:xx:xx:xx
#lxc.include = /etc/lxc/default.conf
ファイルシステム権限は、前の設定で行ったようにACLを使用して設定されます。
lxc-checkconfig
LXC version 4.0.6
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-5.10.0-7-amd64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
--- Control groups ---
Cgroups: enabled
Cgroup v1 mount points:
Cgroup v2 mount points:
/sys/fs/cgroup
Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup namespace: required
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled, not loaded
Macvlan: enabled, not loaded
Vlan: enabled, not loaded
Bridges: enabled, loaded
Advanced netfilter: enabled, loaded
CONFIG_NF_NAT_IPV4: missing
CONFIG_NF_NAT_IPV6: missing
CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, not loaded
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded
FUSE (for use with lxcfs): enabled, loaded
--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
デバッグオプションを使用して実行した後、次の行でエラーを正確に指摘したようです。
DEBUG cgfsng - cgroups/cgfsng.c:cgfsng_monitor_create:1355 - Failed to create cgroup "(null)"
WARN cgfsng - cgroups/cgfsng.c:mkdir_eexist_on_last:1152 - Permission denied - Failed to create directory "/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scope/lxc.monitor.arch"
/sys/fs/cgroup/user.slice/user-1000.slice/session-1.scope
ディレクトリの権限を変更しても効果はありません。 usingsudo
もそこに書き込めません。
cgroupv2
この問題は、Debian 11でこの機能がデフォルトで有効になっているために発生すると思います。オンラインで見つけたさまざまな解決策を試しましたが、これまで何の効果もありませんでした。
どんなアイデアがありますか?権限のないLXCがcgroupv2と連携するようにするか、Debian 11でcgroupv2を無効にしてcgroupv1を有効にする(またはDebian 10のcgroup設定を模倣する)正しい操作を実行してください。他のソリューションも大歓迎です!
いくつかのリンク:
同じ問題ですが、解決策はありません
私のブログでは、Debian 10で権限のないLXCを設定する方法について説明し、設定をコピーしました。
修正する:systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false"
コンテナの起動を支援するためにカーネルパラメータに追加されました。ただし、コンテナ内ではまだ次のエラーが発生します。
Arch Linux:
Welcome to Arch Linux!
Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object.
Exiting PID 1...
セントース8:
Welcome to CentOS Linux 8!
Failed to read AF_UNIX datagram queue length, ignoring: No such file or directory
Failed to install release agent, ignoring: No such file or directory
Failed to create /init.scope control group: Permission denied
Failed to allocate manager object: Permission denied
[!!!!!!] Failed to allocate manager object, freezing.
Freezing execution.
答え1
Debian Bullseye LXCパッケージ(2021年6月11日金曜日にリリースされた1:4.0.6-2)の最新バージョンが最近リリースされました。変更に関する警告cgroup v2 と LXC 4.x を使用して、Debian 11 で権限のないコンテナを起動します。
lxc(1:4.0.6-2)緊急度=中間。
- コマンドを使用して、
権限のないコンテナの実行と接続を処理する新しい方法を提供します。バラよりlxc-unpriv-start
lxc-unpriv-attach
/usr/share/doc/lxc/README.Debian.gz
詳細については。——ピエール・エリオット・ベク[Eメール保護] 2021年6月11日金曜日15:12:15 +0200
Readmeの最初の部分はOPによって処理されたようです。 OP質問の関連部分は次のとおりです。7) コンテナの起動:
- コンテナの起動
統合グループ階層(Debian 11 / bullseyeで始まるsystemdのデフォルト)では、root以外のユーザーは、root以外のユーザーとしてコンテナを起動するには、いくつかの追加権限を持つlxc-startが必要です。最も簡単な方法はsystemdを使用することです。。プロパティが設定されたカスタムサービスを使用してコンテナを起動するか、
Delegate=true
system-runを使用して明示的にこれを実行できます。$ systemd-run --scope --quiet --user --property=Delegate=yes \ lxc-start -n mycontainer
あるいは、最後にDebianが提供するヘルパースクリプトを使用することもできます
lxc-unpriv-start
。systemd-run
コマンドを正しく使用し、必要な環境変数が正しく設定されていることを確認してください。
「3)権限の確認」の部分も言及する価値があります(適応する正しい値を含む)。
$ setfacl --modify user:100000:x . .local .local/share
systemd または Debian ラッパーを使用した例:
$ lxc-create -n busybox-amd64 -t busybox
$ lxc-start -n busybox-amd64
lxc-start: busybox-amd64: lxccontainer.c: wait_on_daemonized_start: 859 Received container state "ABORTING" instead of "RUNNING"
lxc-start: busybox-amd64: tools/lxc_start.c: main: 308 The container failed to start
lxc-start: busybox-amd64: tools/lxc_start.c: main: 311 To get more details, run the container in foreground mode
lxc-start: busybox-amd64: tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options
$ systemd-run --scope --quiet --user --property=Delegate=yes lxc-start -n busybox-amd64
$ lxc-ls --active
busybox-amd64
$ lxc-stop -n busybox-amd64
$ lxc-unpriv-start -n busybox-amd64
Running scope as unit: run-r1c8a4b4fd0294f688f9f63069414fbf0.scope
$ lxc-ls --active
busybox-amd64
この情報は、以前は一部のバグレポートにのみ埋め込まれており、整理するのが困難でした。
- Unified_cgroup_hierarchy で始まる Linux の権限のないコンテナでは、CGroup V2 コントローラ #3206 を使用できません。
- コントローラの操作シーケンスを有効にするには、権限のないコンテナに対してUID 0を許可します。
- 代表団
メモ:
もちろん、実際のオペレーティングシステム(Debian、CentOS ...)を正常に起動することもできます。
参考までにこのQ&Aとは関係ありません。今日(2021-06-26)使用ダウンロード金型,hkp://pool.sks-keyservers.net
サービスが終了したようです。テンプレートを作成する前に、次の主キーサーバーのURLをオーバーライドする必要がありました/usr/share/lxc/templates/lxc-download
。
$ export DOWNLOAD_KEYSERVER=hkp://keys.openpgp.org
$ lxc-create -n centos8-amd64 -t download -- --d centos -r 8 -a amd64
[...]
You just created a Centos 8 x86_64 (20210626_07:08) container.