Dockerコンテナを停止または強制終了できない問題の解決策

Dockerコンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1

問題プロセス

特定の環境のMySQLコンテナを停止、強制終了、またはrmすることができない

sudo docker ps | grep mysqlコンテナを表示します

7844250860f8 mysql:5.7.22 "/.r/r docker-entr..." 41 分前 8 分前 r-dlrel-mysql-1-66df8f33

docker stop / docker kill / docker rm -fなどのコマンドを使用した後、コンテナはすぐに自動的に再起動します。

コンテナをすぐに確認してください。実行時間: Up 1 秒未満で、コンテナがすぐに起動したことを示しています。

7844250860f8 mysql:5.7.22 "/.r/r docker-entr..." 42 分前 1 秒未満 r-dlrel-mysql-1-66df8f33

コンテナに対応する物理プロセスを強制終了し、自動的に再起動します。

物理プロセスを取得する方法: 1. dockerinspectのState.Pidフィールドは物理プロセスIDです。2. psコマンド

コンテナの再起動ポリシーを確認します。ポリシーは「いいえ」なので、自動的に再起動されません。

実行中のコンテナの再起動ポリシーを更新する必要がある場合は、次のコマンドを使用できます: docker update –restart=no my-container

「再起動ポリシー」: {
  「名前」:「いいえ」
  「最大再試行回数」: 0
},

プログラマーが問題を解決する魔法の方法

次のようなシナリオに遭遇したことはありませんか?

  • 私はある問題に困惑していましたが、同僚の前に立ち、その問題をわかりやすく説明すると、突然理解できました。
  • 問題は明らかに非常に単純でしたが、プログラムの実行中に問題が発生しました。そこで、同僚に基本的な構成を確認するよう依頼したところ、突然答えに気づきました。

今回は、私は前者のタイプです。質問を終えるとすぐに、ああ、コンテナ オーケストレーション ツール Rancher がスケジュール管理をしていて、コンテナがクラッシュすると自動的に再起動するのだな、とすぐに思い出しました。

Rancher にログインしてみると、確かにその通りで、問題は「間違って」いることがわかりました。今回は問題ではありませんが、Docker には停止できないという問題があり、それに関する情報は数多くあります。

さらに読む: Docker 再起動ポリシー

解決プロセス中に、Docker の再起動ポリシーとバグについて多くのことを学びました。この記事はわかりやすいです: Docker の再起動ポリシーでコンテナが常に実行されるようにする

ここでは、記録を作成し、Docker の 4 つの再起動ポリシーについて学習します。

いいえ

デフォルトのポリシーは「いいえ」であり、コンテナはいかなる状況でも再起動されません。

失敗時

on-failure は、コンテナの終了コードが異常の場合は再起動し、コンテナの終了コードが正常の場合は何も処理を行わないことを意味します。

sudo docker run -d --name testing_restarts --restart on-failure:5 テストの再起動
85ff2f096bac9965a9b8cffbb73c1642bf7b64a2173bbd145961231861b95819

on-failure[:max-retries]、max-retriesは再起動の最大回数を示します。

on-failure の利点は、コンテナが通常の終了コードで終了した場合、再起動されないことです。

いつも

コンテナの終了コードに関係なく、自動的に再起動します。以下にいくつかのシナリオを示します。

  1. コンテナは異常なステータスコードで終了します(メモリ不足によりアプリケーションが終了するなど)
  2. コンテナが正常に停止し、その後マシンが再起動されるか、Dockerサービスが再起動されます。
  3. コンテナはクラッシュした後、マシンを再起動するか、Dockerサービスを再起動すると正常に動作します。

上記の場合、コンテナは常に再起動されます。ただし、on-failure および no ポリシーが使用されている場合、マシンの再起動後にコンテナは再起動されません。

停止しない限り

Unless-stopped は基本的にいつもと同じですが、unless-stopped が少し特別なシナリオが 1 つあります。

コンテナが正常に停止し、その後マシンを再起動したり、Dockerサービスを再起動したりすると、コンテナは再起動されません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerコンテナが停止できない問題の解決方法

<<:  Centos 7にmysql5.7.24バイナリバージョンをインストールする方法と解決方法

>>:  vue-cropperプラグインは、画像キャプチャとアップロードコンポーネントのカプセル化を実現します。

推薦する

フォームの読み取り専用属性と無効な属性についての簡単な説明

フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...

W3Cチュートリアル(16):その他のW3Cの活動

このセクションでは、その他の重要かつ興味深い W3C アクティビティの概要を説明します。このセクショ...

MySQL sql_mode の分析と設定の説明

昨夜、MySQL データベースにデータセットを挿入したときにエラーが発生しました。データベースは容赦...

Vue3 AST パーサー - ソースコード分析

目次1. AST抽象構文木を生成する2. ASTのルートノードを作成する3. 子ノードの解析4. テ...

IDEA を使用して Tomcat を設定し、JSP ファイルを作成する方法

idea を使用して JSP ファイルを書き込む前に、jdk 環境 (ここでは説明しません) と対応...

Centos7 で yum を使用して Ceph 分散ストレージをインストールするチュートリアル

目次序文yumソース、epelソースを設定するCephソースの設定Cephとそのコンポーネントをイン...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

Node.js管理ツールnvmの詳細なインストール手順

いいえnvmはnodejsの複数のバージョンを管理する役割を担っています。インストール: https...

Nginx の場所と proxy_pass パスの設定の問題の概要

目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...

Vue+nodeはオーディオ録音・再生機能を実現

結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありま...

Mysql と Oracle でよく使用される複数テーブルの変更ステートメントの概要

今日、SQLトレーニングの質問バンクでこの質問を見ました。これは、非常に代表的なマルチテーブル変更の...

Ubuntu 18.04 に MySQL をインストールする (グラフィカル チュートリアル)

ヒント: 以下の操作はすべて root 権限で実行されます。 # MySQL がインストールされてい...

Mysqlリモート接続構成を実装する2つの方法

Mysqlリモート接続構成を実装する2つの方法会社で働いていると、誰かのコンピュータに保存されている...

Docker コンテナのタイムゾーン エラーの問題

目次背景質問問題分析と解決策新たな問題問題分析と解決策背景node-schedule スケジュール ...

Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明

目次vue2.xプレコンセプト:ルーティングフックのカテゴリルーティングとコンポーネントの概念(フッ...