[解決済み】サービス開始後にDockerコンテナを起動し続けるには?
質問
私がやろうとしていることと同じことをするチュートリアルをたくさん見ましたが、なぜか私のDockerコンテナは終了してしまいます。基本的に、私はDockerコンテナ内にウェブサーバといくつかのデーモンをセットアップしています。というbashスクリプトで最終的に行っています。
run-all.sh
をDockerfileのCMDで実行しています。
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ループを入れればいいのはわかっているのですが、終了しないようにする正しい方法は何でしょうか?
解決方法は?
これは、Dockerコンテナを設計する上で、本当に必要な方法とは言えません。
Dockerコンテナを設計する場合、コンテナ内にあるのは 一つ を実行し(つまり、Nginx 用のコンテナを1つ、supervisord またはそれが実行されているアプリ用に1つ用意する)、さらに、そのプロセスはフォアグラウンドで実行される必要があります。
プロセス自体が終了すると、コンテナは "exit" します (あなたの場合、プロセスはあなたの bash スクリプトです)。
しかし、もし
本当に
Docker コンテナで複数のサービスを実行する必要がある (または実行したい) 場合は、以下の手順で開始することを検討してください。
Docker Base Image"
を使用しています。
runit
を擬似的な初期化プロセスとして使用することができます (
runit
は、Nginx と Supervisor が動作している間、オンライン状態を維持します)、他のプロセスが動作している間、フォアグラウンドに留まります。
ドキュメントが充実しているので、あなたがやろうとしていることを簡単に実現できるはずです。
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] Dockerでデータベースなどの永続的なストレージを扱う方法
-
[解決済み] 古くて使われていないDockerイメージを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
-
[解決済み】"docker run -d "の後、Dockerコンテナが自動的に停止する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] dockerコンテナの停止と削除のための単一コマンド
-
[解決済み] docker-compose: ラン、エクゼクティブの違い、レイヤーはどうなるのか?
-
[解決済み] Docker: 停止したDockerコンテナを表示する
-
[解決済み] docker-composeでdockerイメージにタグ付けする方法
-
[解決済み] dockerfileのcopyコマンドで使われる-fromとは?
-
[解決済み] Dockerのバージョンを判断する方法 [重複]について
-
[解決済み】"docker run -d "の後、Dockerコンテナが自動的に停止する。
-
[解決済み】Dockerfilesの名前の付け方
-
[解決済み】Kubernetes イメージを更新するデプロイメントの作り方
-
[解決済み】https://index.docker.io に接続しようとすると、ネットワークがタイムアウトしました。