web-dev-qa-db-ja.com

docker runのコマンドライン引数

私たちのニーズに合わせて、Dockerイメージをゆっくりと構築しようとしています。私がやりたいのは、モノを含むベースイメージを実行してから、バックグラウンドで実行可能ファイルをモノとして実行することです。通常のコマンドラインから、コンテナで実行しようとしないと、次のようになります。

/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe &

それはうまくいきます。しかし、そのようにコンテナを実行するときにそれを行おうとすると:

Sudo docker run -i -t crystal/mono-base /usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe &

No such file or directoryを取得します。 &を渡す方法はありますか?結局、このBackgroundProcessorをバックグラウンドで実行するために&を渡してから、フォアグラウンドで別のアプリを実行したいと思います。別の解決策についてこの投稿を見ました http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/ しかし、私はコマンドラインからいくつかのことを実行して、アプリの概念実証のものを実行できると思いました。

17
Crystal

-cオプションを使用してbashにコマンドラインを文字列として指定します。

Sudo docker run -i -t crystal/mono-base bash -c "/usr/local/bin/mono /home/crystal/Downloads/BackgroundProcesser.exe & /bin/bash"

コンテナーへのバックグラウンドコマンドの後に何かを置いてもすぐには終了しません

24
Arthur Ulfeldt

@ウルフェルトの答えはうまくいきます。この種のコマンドラインはすぐに手に負えなくなるため、プロセスを管理するためのスクリプトを作成することをお勧めします。 elsewhere で説明したように、監視プログラムを使用して複数のプロセスを実行することもできます。

0
seanmcl