1

私の dockerFile では、

やってみました

service myapp start;

しかし、コンテナを起動すると:

docker run -it myapp_image service myapp status 
>dead but pid file exists

ただし、 conainer に入って手動で起動すると、問題なく実行されました

 docker run -it myapp_image /bin/bash
 bash-3.2$ service myapp restart
 bash-3.2$ service myapp status
        > myapp is running.

DockerFile からサービスを実行するための回避策はありますか?

4

3 に答える 3

2

service myapp startバックグラウンドでアプリをサービスとして起動します。このコマンドが存在するとすぐに、docker コンテナーは停止します。これは、Docker コンテナーの予想される動作です。

あなたがしたいことはCMD、アプリをバックグラウンドではなくフォアグラウンドで起動させることです。

于 2014-10-25T11:30:39.973 に答える
1

Dockerfile CMD サービス myapp start を入れた後、サービス myapp status を開始コマンドとして渡してコンパイルしたイメージを実行すると、CMD コマンドがオーバーライドされます。したがって、開始コマンドは実行されません。myapp が起動時に何かを印刷する場合は、次のことを試してください。

docker logs your_container_id

期待する出力があるかどうかを確認します。または、開始コマンドとして、myapp を開始し、ステータスを照会するスクリプトを配置します。次に、logs コマンドを使用して、実行中かどうかを確認します。

于 2014-10-25T08:55:01.317 に答える
1

コンテナーは、docker run のパラメーターとしてコマンドを渡す限り、つまり「サービス」プログラムが実行されている限り存続します。

サーバーをフォアグラウンドで起動するか、サーバーをバックグラウンドで起動するコマンドを実行して (おそらくそれ以上のことも)、さらに多くのことを実行し続けることができます。

于 2014-10-25T13:00:32.437 に答える