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 の悲観的ロックと楽観的ロックの理解と応用分析

推薦する

ハイパーリンクに関するいくつかの質問

ポテトチップスパーティーのこのエピソードに参加して、何人かの友人に会えてとても嬉しいです。思いがけず...

web.config (IIS) および .htaccess (Apache) の構成

xml <?xml バージョン="1.0" エンコーディング="...

Docker データ ストレージ ボリュームの詳細な説明

デフォルトでは、コンテナ データの読み取りと書き込みはコンテナのストレージ レイヤーで行われます。コ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

MySQLの共同クエリ最適化メカニズムの詳細な説明

目次MySQL フェデレーテッド クエリ実行戦略。実行計画フェデレーテッドクエリオプティマイザーMy...

MySQL、Oracle、SQL Server のページングクエリ例の分析

最近、Oracle、MySQL、SQL Server 2005 のデータ ページング クエリについて...

html の img src="" で js 関数または js 変数を呼び出して、画像パスを動的に指定します。

この問題に関して、オンライン リソースをたくさん見つけました。ここにいくつかの方法を示します。コード...

MySQL テーブル分割後にスムーズにオンラインになる方法

目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...

MySQLデータベーステーブルの容量を確認する方法の例

この記事では、MySQL のデータベース テーブルの容量を確認するためのコマンド ステートメントを紹...

フィルターを使用して画像に透明な CSS を書く方法

フィルターを使用して画像に透明な CSS を書く方法コードをコピーコードは次のとおりです。 html...

Discuz! フォーラムに設定オプションを追加する方法

Discuz! フォーラムにはバックグラウンドで多くの設定オプションがあり、これらの設定オプションを...

React Fragment の紹介と詳しい使い方

目次序文フラグメントの動機React Fragment の紹介と使用<React.Fragme...

HTML における br と br/ の違い

スタックフローからの回答:単に<br>だけで十分です。その他の形式は、XHTML との互...