iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果

1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラーが報告されるため、ネットワークファイアウォールに問題があると思われます。

10.10.0.86 | 失敗 >> {
 「失敗」:true、 
 "msg": "/bin/sh: /usr/bin/python: そのようなファイルまたはディレクトリはありません\r\nOpenSSH_7.6p1 Ubuntu-4ubuntu0.3、OpenSSL 1.0.2n 2017 年 12 月 7 日\r\ndebug1: 構成データ /etc/ssh/ssh_config を読み込んでいます\r\ndebug1: /etc/ssh/ssh_config 行 19: * のオプションを適用しています\r\ndebug1: auto-mux: 既存のマスターを試行しています\r\ndebug1: mux_client_request_session: マスター セッション ID: 2\r\n10.10.0.86 への共有接続が閉じられました。\r\n", 
 「解析済み」: false
}

2. マシンBにログインします。これはDockerコンテナを実行しているオンラインマシンです。私の経験では、ネットワークファイアウォールに問題がある場合は、

iptables -F
systemctl iptablesを停止する 
systemctl 停止 ファイアウォール

3. それでコンテナに影響はないだろうと思い、コンテナのログを見てみた。予想外に10個以上エラーが報告されていて、すべて接続できない状態だった。ちょっと慌てた…コンテナを再起動したが、全然起動しなかった。エラーは以下の通りだった

docker: デーモンからのエラー応答: ドライバーはエンドポイント happy_ptolemy での外部接続のプログラミングに失敗しました (9cedc114be35eb86cd6f7f7bb4f11f93b5f8d2c0745afc72664cef8e96aad439): iptables が失敗しました: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 10.10.0.86 --dport 3000 -j ACCEPT: iptables: その名前のチェーン/ターゲット/一致はありません。

(終了ステータス 1)。

4. 解決策: dockerを再起動する

systemctl dockerを再起動します

知識ポイント

1. netfilterとiptablesの関係

Netfilter は、ネットワーク パケットを管理するために使用される Linux カーネルのファイアウォール フレームワークです。ネットワーク アドレス変換 (NAT) の機能だけでなく、パケット コンテンツの変更やパケット フィルタリングなどのファイアウォール機能も備えています。 Netfilter を制御するには、ユーザー空間でアプリケーション ソフトウェア iptables を使用します (iptables は単なるアプリケーション ソフトウェア、ツールです)。

2. iptablesとfirewalldの関係

Firewalld は iptables と同様にアプリケーション ソフトウェアでありツールですが、その基礎となるレイヤーはやはり最初に iptables を通過します。

3. docker、firewalld、iptablesの関係

1) docker がインストールされると、iptables または firewalld が自動的に引き継がれます。docker が実行されると、iptables にルールが自動的に追加されます。そのため、iptables を再起動すると、iptables は失われ、docker を再起動することによってのみ修正できます。

2) Systemd を使用する場合、firewalld は Docker の前に起動しますが、Docker の起動後に firewalld を起動または再起動する場合は、Docker プロセスを再起動する必要があります。

要約する

1. 生産環境への敬意

2. 知識ポイントを十分に理解していないため、どのシナリオが使用可能で、どのシナリオが使用できないかがわからない

3. その後、ファイアウォールのルールをさらに理解する必要があります

これで、iptables の再起動後に Docker の iptables ルールが失われるというこの記事は終わりです。再起動後に Docker の iptables ルールが失われるという詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker コンテナで iptables を使用するときに最小限の権限を有効にする方法
  • Linux iptables とインターフェースを使用してコンテナ ネットワークを管理する Docker の詳細な説明

<<:  Vueは小さな天気予報アプリケーションを実装します

>>:  MySQL の悲観的ロックと楽観的ロックの理解と応用分析

推薦する

Vue における LocalStorage と SessionStorage の違いと使い方

目次LocalStorageとはSessionStorageとはLocalStorage と Ses...

無効にしてHTMLフォーム入力を送信した後にフォーム値が取得されない問題を解決する方法

フォーム入力ボックスの入力をdisable属性に設定して送信すると、入力ボックスの値を取得できなくな...

MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。

よく使われる4つのMySQLエンジンの紹介(1):MyISAMストレージエンジン:トランザクションや...

MySQL ジョイントインデックス(複合インデックス)の実装

共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...

動的および静的分離を実現する nginx のサンプルコード

1. nginxの動的と静的の分離の簡単な設定web1は静的サーバー、web2は動的サーバー、nod...

MySQLクエリが遅い原因と解決策

クエリ速度が遅くなる理由は多数ありますが、最も一般的な理由は次のとおりです。 1. インデックスがな...

Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

1. コンテナにnginxサービスをデプロイするcentos:7 イメージはコンテナを実行し、このコ...

Vue+video.jsはビデオプレイリストを実装します

この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...

Vueはショッピングカート決済機能をシミュレートします

この記事では、ショッピングカート決済機能を実現するためのVueの具体的なコードを例として紹介します。...

vue-pdf はオンラインファイルプレビューを実現します

この記事では、参考までに、ファイルのオンラインプレビューを実現するためのvue-pdfの具体的なコー...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...

MySQL マスタースレーブレプリケーションの読み書き分離構造の詳細な説明

MySQL マスタースレーブ設定MySQL のマスター/スレーブ レプリケーションと読み取り/書き込...

HTML の順序なしリストタグと順序付きリストタグの使用例

1. 上部と下部のリストタグ: <dl>..</dl>:上dt下層dd: カ...