私がやろうとしていることと同じように見える一連のチュートリアルを見てきましたが、何らかの理由でDockerコンテナーが終了します。基本的に、私はDockerコンテナー内にWebサーバーといくつかのデーモンをセットアップしています。この最後の部分はrun-all.sh
、DockerfileのCMDで実行するというbashスクリプトを使用して行います。run-all.sh
このようになります:
service supervisor start
service nginx start
そして、次のようにDockerfile内で開始します。
CMD ["sh", "/root/credentialize_and_run.sh"]
手動で実行すると(つまり、-i -t / bin / bashを使用してイメージにアクセスすると)すべてのサービスが正しく起動し、イメージを実行するとすべてが正しく実行されているように見えますが、一度終了すると、プロセスの起動が完了します。プロセスを無期限に実行したいのですが、私が理解している限り、コンテナはこれを実行するために実行し続ける必要があります。それにもかかわらず、実行するとdocker ps -a
、次のようになります。
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
何ができますか?なぜ存在するのですか?私はbashスクリプトの最後にwhileループを置くだけでそれを維持できることを知っていますが、終了しないようにする正しい方法は何ですか?