最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に実行してコンテナを実行するテスト スクリプトがあります。テスト中に、コンテナが「Up」状態まで完全に実行されず、「created」状態のままになることがあり、非常に奇妙であることがわかりました。 上記の環境では、まず「作成済み」状態のコンテナと dockerd ログをチェックします。 (1)dockerdログには「post create」リクエストのみが含まれますが、コンテナに対する「post start」リクエストは受信されません。 (2)docker startを手動で実行すると、コンテナを「Up」状態にプルすることができ、コンテナとイメージ自体に問題がないことが示されます。 上記の現象から、「docker run」プロセスが完了しておらず、docker run が終了しているのではないかと推測されます。早速「docker run」を見てみましょう。cli/command/container/run.go では、「docker run」コマンドの処理関数 func runRun() の実装が以下のような状況になっています。 func runRun(dockerCli *command.DockerCli, flags *pflag.FlagSet, opts *runOptions, copts *runconfigopts.ContainerOptions) エラー { 。 。 。 。 。 。 createResponse、err := createContainer(ctx、dockerCli、config、hostConfig、networkingConfig、hostConfig.ContainerIDFile、opts.name) 。 。 。 。 。 。 エラーの場合:= client.ContainerStart(ctx, createResponse.ID, types.ContainerStartOptions{}); エラー!= nil {) 。 。 。 。 。 } createContainer() 関数を実行した後に「docker run」コマンドが異常終了した場合 (kill シグナルに遭遇するなど)、ContainerStart() 関数は実行を継続できません。これにより、コンテナは正常に作成され、「作成済み」状態になりますが、実際には dockerd に「post start」が与えられず、最終的に上記の現象が発生します。 そのため、日常業務においては「docker run」コマンドが正常に実行されているか、異常終了していないか、終了時の戻り値が 0 になっていないかなどを監視する必要があります。 補足: Dockerコンテナを実行する3つの方法 最初の解決策Docker コンテナを実行すると、多くの場合、コンテナは Exited 状態になります。 たとえば、次のコマンド docker run -d --name nginx -P nginx /bin/bash は対話モードが完了した後に終了し、再度 docker start は機能しません。 実行後にコンテナを実行し続けたい場合は、/bin/bash を削除するだけです。 2番目の解決策docker run -it --name nginxit -P nginx 現在、コンテナ nginxit は終了状態になっています。 dockerで起動すれば使える docker で nginxit を起動する 3 番目は 2 番目と似ています。docker run -it --name nginxit2 -P nginx /bin/bash フォアグラウンドとバックグラウンドのインタラクションを終了する必要があります。 root@de4dbb27f905:/# 終了 次に再起動します。 docker で nginxit2 を起動します 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: MySQL 上級学習インデックスの長所と短所、使用ルール
>>: jQuery キャンバスは QR コード付きのポスターを生成します
目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...
最近、Docker とホストが同じネットワーク セグメント上で通信する問題を解決し、そのプロセス全体...
フレーム ウィンドウの関連付けを実現するには、次に示すように、ハイパーリンクの「ターゲット」ウィンド...
背景記事を始める前に、賽博朋克とは何か、賽博朋克2077とは何かを簡単に理解しましょう。サイバーパン...
いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...
目次1. 概要2. JSON基本ツール3. JSONパス式4. JSONを検索して変更する序文:長い...
目次関数パラメータの2つの主要なカテゴリ位置パラメータ可変長パラメータ名前空間要約する関数パラメータ...
この記事では、Linux サーバー上で Nginx と Apache の共存を実装する方法について説...
目次序文JSON.stringify の 6 つの機能特集1特集2特集3特集4特集5特集6手動で文字...
インターフェース全体に背景画像を表示したい場合は、当然 body に背景を追加することを考えます。コ...
クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...
目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...
序文セキュリティ部門からSQLインジェクションやXSS攻撃の脆弱性などに関する警告メールを頻繁に受け...
ピクセル解決通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクト...
ffmpeg は非常に強力なオーディオおよびビデオ処理ツールです。公式 Web サイトは http:...