lxc-autostart
Debian 11 Bullseye では、権限のないコンテナは起動しません。
Debian 11 Bullseye で無許可コンテナのリリースが修正されました。
回答lxc-unpriv-start
代わりに使用しますが、lxc-start
使用する場合はこの方法を利用できませんlxc-autostart
。
ベストアンサー1
基本ソリューション
さて、数日の夜を明かりの終わりに各コンテナのための単純なシステム単位ファイルを作成しました。例は次のとおりです。
[Unit]
Description=Linux container my-container-name
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n my-container-name
ExecStop=/usr/bin/lxc-stop -n my-container-name
StandardOutput=journal
User=my-lxc-user
Group=my-lxc-user
Delegate=yes
[Install]
WantedBy=multi-user.target
これはDelegate=yes
、公開されたアドバイスの簡単なフォローアップです。ここそしてまた回答上にリンクしておきました。
ユーザーがさまよういいえ必須(言及)ここ)。
この解決策の良い副作用は、(無許可の)コンテナをシャットダウンしてもホストシャットダウンが遅れないことです。ここ)信号を送信する代わりに使用法/usr/bin/lxc-stop -n my-container-name
で定義されているからです。ExecStop
チューニング - システムテンプレート
ありがとうsystemd テンプレート単位ファイルすべてのコンテナに単一の unif ファイルを使用できます。私の最終テンプレート単位ファイルは次のとおりです。
[Unit]
Description=Linux container %I
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n %i
ExecStop=/usr/bin/lxc-stop -n %i
StandardOutput=journal
User=lxc
Group=lxc
Delegate=yes
[Install]
WantedBy=multi-user.target
ファイル名を指定し[email protected]
て配置したので、以下を/etc/systemd/system/
使用してすべてのコンテナを制御できます。systemctl COMMAND [email protected]
lxc.service
(この内容はオリジナルであり、責任があることをお知らせします。lxc-autostart
)
ユニットファイルなどの改良を歓迎します! - 専門家ではないので基本的に公式文書そしてこれは素晴らしい答えです。
チューニングシステムユーザーサービス
もう1つの進歩は、Systemdユーザーサービスを使用して新しいコンテナを展開するときにrootとして実行する必要がないことです。
単位ファイルは少し異なります。
[Unit]
Description=LXC container %I
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/lxc-start -n %i
ExecStop=/usr/bin/lxc-stop -n %i
StandardOutput=journal
Delegate=yes
[Install]
WantedBy=default.target
multi-user.target
だからこそ使用不可ユーザーサービスにはこれを使用する必要がありますdefault.target
。
今回は、ユーザーがログインするのではなく、起動時にサービスが開始されるようにユーザー遅延を有効にする必要があります。次のコマンドを使用して、ルートアカウントで遅延を有効にできます。loginctl enable-linger <my-lxc-user>
サービスファイルを保存し、以下を使用して有効にしました。.config/systemd/user/[email protected]
systemctl --user enable [email protected]