私がやろうとしているのと同じことをしているように見えるチュートリアルをたくさん見てきましたが、何らかの理由で 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 ループを置くことができることはわかっていますが、終了しないようにする正しい方法は何ですか?