LXCコンテナはコマンドラインから起動されますが、cronの@rebootまたは/etc/rc.initでは自動的に起動されません。

LXCコンテナはコマンドラインから起動されますが、cronの@rebootまたは/etc/rc.initでは自動的に起動されません。

以下を使用すると、いつでもコンテナを正常に起動できます。

fadedbee@host:~$ sudo lxc-start -n mycontainer

ローカルZFSの一部のディレクトリをバインドするまで自動的に起動されました。

/etc/rc.localに以下を追加しました。

/bin/date >> /var/log/mycontainer.log
/bin/chmod a+r /var/log/mycontainer.log

/usr/bin/lxc-start -o /var/log/mycontainer.log

-l INFO -n mycontainer > /var/log/mycontainer.stdout 2 > /var/log/mycontainer.stderr &

/var/log/mycontainer.log ファイルが生成されますが、日付のみが含まれ、その他の内容は含まれません。

ルートのcrontabに以下を追加しました。

@reboot /usr/bin/lxc-start -o /var/log/mycontainer.log -l INFO -n mycontainer

しかし、それも何の成果も出せませんでした。

私はこれらすべてがZFSが完成する前に起こったと強く疑っています。 cronエントリに追加してもsleep 30 ;役に立ちません。

私を混乱させることは、ログstderr、stdout、またはログ出力をまったく取得できないことです。

コンテナを自動的に起動するか、少なくともログ出力を確認するにはどうすればよいですか?


修正する:

私は以下を追加しました:

*/5 * * * * /usr/bin/lxc-start -n mycontainer

ルートのクローンに追加しましたが、まだ起動しません。これ同じ(sudo'd) bash プロンプトのコマンドが動作します。ルートの残りのcronエントリは期待どおりに機能します。

ベストアンサー1

起動時にLXCコンテナを起動するために、lxcシステムサービスは説明されているようにlxc-autostartを実行します。ここ

自動起動を設定するには、コンテナ設定に次の2行を入力します。

lxc.start.auto = 1
lxc.start.delay = 30

遅延は秒単位で希望の値に設定できます。

crontabには何もありません。システムを再起動すると、lxcサービスはそのタスクを実行します。

起動時にLXC自動起動が実行されていることを確認できます。 systemdシステムでこれを行うには、systemdサービスを一覧表示して次のlxc.serviceように確認できます。

systemctl -la | grep 'lxc\.service'

次の行が表示されます。

lxc.service             loaded    active   exited    LXC Container Initialization and Autoboot Code

次の行が表示されない場合は、サービスを有効にしてみてください。

sudo systemctl enable lxc

おすすめ記事