systemd-nspawnとsystemd-runを使用してコンテナ内のプログラムをサービスとして起動する方法は?

systemd-nspawnとsystemd-runを使用してコンテナ内のプログラムをサービスとして起動する方法は?

unoconvsystemd-nspawnコンソールなしでバックグラウンドで実行され、他のプロセスからアクセスできるようにコンテナ内でリスナー(具体的にリスナーとして)を実行するにはどうすればよいですか。たとえば、完璧な世界では、次のように簡単です。

# something like this to start the container and program in background
systemd-nspawn -D <container path> --background <unoconv --listener> 

# something like this to connect to container and execute command
systemd-run --machine <machine name> <unoconv -f pdf file.txt>

これまで私が得た最も遠いのはコンテナーを実行するために systemd-nspawn を飼いならすこれにより、コンテナがバックグラウンドで実行されるようになりますmachinectl。しかし、

sudo systemd-run --machine <machine name> ls

エラーが原因で失敗します。

Failed to create bus connection: Permission denied.

私の質問は2つあります。 1. このエラーを修正できますか?それとも、2つの(好ましくは)コンテナを起動して接続し、コマンドを実行するより簡単な方法を教えてください。

(私はインターネットにアクセスできないセキュリティシステムでUbuntu Xenialを実行しています)

ベストアンサー1

コンテナをどれくらいの頻度で、いつ実行するかによって異なります。

Ubuntuがロードされた後にコンピュータが起動するたびにこのプログラムがすぐに実行されるようにするには、次のことを試すことをお勧めします。申請開始設定。 「アプリケーション」プロセスを開始するときにターミナルコマンドとして機能する機能を追加できます。または、スクリプトを一緒に構成してスクリプトを起動プロセスとして実行すると、より効果的に制御できます。 (アプリケーション実行リストの項目は、アルファベット順名前フィールドで実行順序が重要な場合は、それに応じて名前を指定するか、起動スクリプトを生成し、唯一の呼び出しに設定.)

特定の繰り返し時間/日付でプログラムを実行するには、cronタスクを組み合わせて同じタスクを実行することをお勧めします。

要求に応じて実行したい場合は...わかりません。私はsystemd-nspawnに精通していません。おそらくこの記事またはこの記事役に立つでしょう。

質問1については混乱しています。マシン名のスペルが間違っているのではないでしょうか?コンテナOSの権限がsystemd-run認証オプションと一致しませんか?sshdを試すことができますまたはドッカーコンテナ他の方法がない場合。

もちろん、実際に--machine <machine name>--machine=<machine name>:血

おすすめ記事