[解決済み] dockerの実行が成功したかどうかをプログラムで検出するには?
質問
私は、コンテナがまだ構築され、正しく起動し、内部のアプリがリクエストに応答することをすばやくチェックするために、非常に単純なbashスクリプトを書いています。
時々
docker run
が失敗することがあります。例えば、コンテナをバインドしようとしているポートがすでに割り当てられているためです。しかし、そのようなときは
docker run
の終了コードはまだ0なので、終了コードを使用することはできません。コンテナが正しく開始されたことをプログラムで確認するにはどうしたらよいでしょうか。
私が考えている解決策は
- 出力を解析してエラーを検出する
-
docker ps
コンテナが実行されているかどうかを確認するために
がありますが、これらは両方とも少しやりすぎで醜いようです。私は
docker run
が成功したかどうかを確認する、より良い方法を見逃していませんか?
どのように解決するのですか?
Abel Muiñoがコメントで提案したように、これはより最近のDockerバージョンで修正された可能性があります(私は現在0.9.1を実行しています)。
しかし、古いバージョンで私のように一時的に立ち往生している場合、コンテナが起動したかどうかを確認するための適切な回避方法を見つけました。
docker inspect
.
docker inspect
は、コンテナに関する多くの情報、特にコンテナが現在実行中か否かを含む JSON オブジェクトを返します。特に、コンテナが現在実行中かどうかが重要です。
-f
フラグを使用すると、必要なビットを簡単に抽出することができます。
docker inspect -f {{.State.Running}} $CONTAINER_ID
または
docker inspect -f "{{.State.Running}}" $CONTAINER_ID
は
true
または
false
.
なお、おそらく
sleep 1
(またはそれ以上) の間にコンテナを起動し、それが稼働しているかどうかをチェックします。セットアップに何か問題がある場合、実際に終了する前に非常に短い時間だけ「実行中」として表示される可能性があります。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み] bashを使って関数の出力を変数に代入するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 実行中のBASHスクリプトのパスを決定する [重複].
-
[解決済み] このbashのフォーク爆弾はどのように機能するのでしょうか?重複
-
[解決済み] Bashでファイル名を一括変更する
-
[解決済み] Unixで、カレントディレクトリ以下をすべて削除するにはどうしたらいいですか?
-
[解決済み] bashでスクリプトの中で宣言された変数をリストアップする方法は?
-
[解決済み] 最終編集日順のファイル一覧
-
[解決済み] シェルのワイルドカード文字展開を停止しますか?
-
[解決済み] Bashのファイル拡張子は何ですか?
-
[解決済み] bashでsshがwhileループから抜け出す [重複] [重複
-
[解決済み] スペースで区切られた引数の受け渡し (bash) スクリプト