Dockerコンテナが起動直後に終了する問題を解決する

Dockerコンテナが起動直後に終了する問題を解決する

最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたところ、コンテナの起動時に Dockerfile でコンテナ実行コマンドを指定できることが分かりました。

CMD を指定しますが、各 Dockerfile には 1 つの CMD 命令しか含めることができません。複数の CMD 命令を指定した場合、最後の命令のみが実行されます。

そこで方法を考えて、スクリプトを書いて、スクリプト内で複数のプロセスを開始し、Dockerfile でスクリプトを実行しました。

最終的に、この方法は実行可能であることが証明されました。しかし、実験中に問題が発生しました。コンテナは起動後すぐに停止しました。

情報を参照した後:

Docker コンテナは、一度に 1 つのプロセスのみを管理できます。このプロセスが終了すると、コンテナも終了します。ただし、これはコンテナが 1 つのプロセスのみを実行できるという意味ではありません (他のプロセスはバックグラウンドで実行できます)。ただし、コンテナが終了しないようにするには、フォアグラウンドでプロセスが実行されている必要があります。

解決:

スクリプト内の最後のプロセスはフォアグラウンド モードで実行する必要があります。つまり、プロセスの最後に & (& はバックグラウンド実行を意味します) を追加しないでください。そうしないと、コンテナーが終了します。

補足知識: docker コンテナで gdbserver を使用する際の問題と解決策

dockerコンテナでgdbserverを使用するときに問題が発生します

linux_ptrace_test_ret_to_nx: PTRACE_TRACEME できません: 操作は許可されていません

その理由は、Docker はデフォルトで PTRACE 機能を無効にしており、コンテナの実行時に有効にする必要があるためです。

docker run -ti --cap-add=SYS_PTRACE ubuntu

起動後すぐにdockerコンテナが終了する問題を解決する上記の記事は、編集者が皆さんと共有する内容のすべてです。 皆さんの参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerがコンテナを起動するたびに、IPとホストが指定した操作が実行されます。
  • シェルスクリプトによるDockerコンテナの起動順序の制御の詳細な説明
  • Dockerは起動されていないコンテナの設定情報を変更します
  • Dockerコンテナ内で2つのプロセスを開始するときのDockerfile実装コード
  • Docker ファイルの保存パス、コンテナの起動コマンド操作の取得
  • Docker はすべてのコンテナをバッチ起動して閉じます

<<:  MySQL フラッシュリストとダーティページフラッシュメカニズム

>>:  JavaScript のドキュメント オブジェクト モデル (DOM)

推薦する

MySQL ステートメントの実行順序と書き込み順序の例の分析

選択ステートメントの完全な構文は次のとおりです。 選択 DISTINCT <選択リスト>...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

Vue3は画像拡大鏡効果を実現します

この記事の例では、画像拡大鏡効果を実現するためのVue3の具体的なコードを参考までに共有しています。...

MySQL マスター スレーブ データが矛盾しています。プロンプト: Slave_SQL_Running: 解決策はありません

この記事では、MySQL マスターとスレーブ データ間の不一致の解決方法と、プロンプト「Slave_...

Zabbixで指定時間内の変化値を設定する方法の詳細な説明

背景説明: 既存の負荷分散装置には、付加価値状態にある指標があります (増加するだけで減少しないため...

MySQL のバイナリおよび varbinary データ型の詳細な説明

序文BINARY と VARBINARY は、文字列ではなくバイナリ文字列を格納する点を除いて、CH...

VMware 仮想マシンの 3 つのネットワーク方式と原則 (概要)

1. ブリッジ: デフォルトでは VMnet0 が使用されます1. 原則:ブリッジは、それぞれ 2...

CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

Apollo オープンソース アドレス: https://github.com/ctripcorp/...

Tomcatでcatalina.batがUTF-8に設定されている場合、コンソールに文字化けした文字が表示されます

1. catalina.bat は UTF-8 に設定する必要があります。UTF-8 に設定しないと...

JavaScript プロトタイプの詳細

目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...

CentOS のクローン作成、Linux 仮想マシンの共有の完全な手順

序文Linux が完全にセットアップされると、クローン機能を使用して短時間で複数の Linux を作...

JavaScript を使用した数独の完全な実装プロセス

目次序文数独の解き方最初のボックスに記入してください2番目のボックスに記入してください3番目のボック...

Docker Alibaba Cloud RocketMQ 4.5.1 のデプロイプロセスの詳細な説明

検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...

フロントエンド開発一般マニュアル(ツール、Webサイト、経験などを含む)

今日は何もすることがなかったので、いくつかのツール(オンラインとクライアント)、よく使用する URL...

MySQL 8.0 のメモリ消費の詳細な分析

目次1. innodb_buffer_pool_size 2. innodb_log_buffer_...