Dockerはブリッジを追加し、IPアドレスの範囲を設定します

Dockerはブリッジを追加し、IPアドレスの範囲を設定します

バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に作成しないためなのか、それとも他の何らかの理由で docker ネットワーク モードにブリッジが存在しないのかはわかりません。

ポートをマップするためにコンテナをインストールしましたが、ポートが表示されず、エラーも報告されませんでした。そのようなブリッジがないことがわかったまで、長い時間をかけて探しました。

さっそく。さあ始めましょう!

現在の状況を見てみましょう:

これは本番環境なので、ビジネスへの影響を避けるために、まずポッドを排除する必要があります。

まず、docker network create xxを直接使用することはできません。この方法で作成されたブリッジは仮想マシンに接続されていないため機能せず、他の追加構成が必要になる場合があります。ここではこれについては触れません。落とし穴を避けるために、このことを言及してください。

下の図に示すように、プロセス全体が明確に表示されます。便宜上、コマンドもコピーしておきます。

[root@dashuaibi-server-103 jpserver]# ip a|grep docker0
[root@dashuaibi-server-103 jpserver]# brctl -h
使用法: brctl [コマンド]
コマンド:
 addbr <ブリッジ> ブリッジを追加する
 delbr <ブリッジ> ブリッジを削除する
 addif <ブリッジ> <デバイス> ブリッジにインターフェースを追加
 delif <ブリッジ> <デバイス> ブリッジからインターフェースを削除します
 ヘアピン <ブリッジ> <ポート> {on|off} ヘアピンをオン/オフにする
 setageing <ブリッジ> <時間> エージング時間を設定する
 setbridgeprio <ブリッジ> <prio> ブリッジの優先度を設定する
 setfd <ブリッジ> <時間> ブリッジ転送遅延を設定する
 sethello <ブリッジ> <時間> ハロータイムを設定する
 setmaxage <ブリッジ> <時間> 最大メッセージ経過時間を設定する
 setpathcost <ブリッジ> <ポート> <コスト> パスコストを設定する
 setportprio <ブリッジ> <ポート> <prio> ポートの優先度を設定する
 show [ <bridge> ] ブリッジのリストを表示します
 showmacs <bridge> MACアドレスのリストを表示します
 showstp <ブリッジ> ブリッジの stp 情報を表示します
 stp <ブリッジ> {on|off} stp をオン/オフにする
[root@dashuaibi-server-103 jpserver]# brctl addbr docker0
[root@dashuaibi-server-103 jpserver]# ip link set docker0 up
[root@dashuaibi-server-103 jpserver]# ip addr 192.168.0.0/16 dev docker0を追加します
[root@dashuaibi-server-103 jpserver]# cat /etc/docker/daemon.json 
{"データルート": "/docker","ブリッジ": "なし","レジストリミラー": ["http://9b2cd203.m.daocloud.io"]}
[root@dashuaibi-server-103 jpserver]# vim /etc/docker/daemon.json 
[root@dashuaibi-server-103 jpserver]# cat /etc/docker/daemon.json 
{"データルート": "/docker","ブリッジ": "docker0","レジストリミラー": ["http://9b2cd203.m.daocloud.io"]}
[root@dashuaibi-server-103 jpserver]# systemctl daemon-reload
[root@dashuaibi-server-103 jpserver]# systemctl dockerを再起動します
[root@dashuaibi-server-103 jpserver]# ip a|grep docker0
149: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 状態 UNKNOWN グループのデフォルト qlen 1000
 inet 192.168.0.1/16 brd 192.168.255.255 スコープ グローバル docker0
[root@dashuaibi-server-103 jpserver]# docker network ls
ネットワーク ID 名前 ドライバー スコープ
edd34bc4e197 ブリッジ ブリッジ ローカル
9560af3573ae ホスト ホスト ローカル
22885d053744 なし null ローカル
[root@dashuaibi-server-103 jpserver]#

再起動後、ポートをマップするコンテナを再実行します。比較すると次のようになります。以前にブリッジが追加されていない場合は、ポートは存在しません。ブリッジを追加した後。ポートマッピングは正常です

最後のステップは、汚れを除去してノードのスケジュールを再開することです。

kubectl アンコルドン 10.168.0.103

補足: DockerはデフォルトのブリッジIPアドレス172.17.0.1を変更します

Docker サービスが開始されると、デフォルトで docker0 ブリッジが作成され (docker0 内部インターフェースを持つ)、カーネル層で他の物理または仮想ネットワーク カードが接続され、すべてのコンテナーとローカル ホストが同じ物理ネットワーク上に配置されます。

デフォルトでは、Docker は docker0 インターフェースの IP アドレスとサブネット マスクを指定し、ホストとコンテナーがブリッジを介して相互に通信できるようにします。また、MTU (インターフェースで受信可能な最大転送単位) も指定します。これは通常 1500 バイト、またはホスト ネットワーク ルーティングでサポートされているデフォルト値です。これらの値は、サービスの開始時に設定できます。

/etc/docker/daemon.json ファイルを編集して、コンテンツ "bip": "ip/netmask" を追加します [ホストと同じネットワーク セグメントを使用しないでください]

[root@localhost /]# vi /etc/docker/daemon.json 
{"bip":"192.168.100.1/24"}
systemctl dockerを再起動します

注: 友人の変更は失敗し、brctl を使用してブリッジを削除したと理解しています。実際には、正しく構成されていなかっただけです。

一部の daemon.json ファイルには次のようなコンテンツが含まれています。

{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]} これはdockerのプライベートリポジトリです

{"レジストリミラー": ["http://f1361db2.m.daocloud.io"]}
{"bip":"172.16.0.1/24"}

この変更は有効になりません。

{"レジストリミラー": ["http://f1361db2.m.daocloud.io"],
"bip":"172.16.0.1/24"}

これが正しい変更方法です。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Docker Compose ネットワーク設定の説明
  • docker-compose ネットワーク設定についての簡単な説明
  • Dockerカスタムブリッジdocker0とdockerのコマンド操作の開始、終了、再起動
  • Centos Docker ブリッジ モードでホスト Redis サービスにアクセスできないというトラブルシューティングの経験
  • Docker-compose はブリッジを作成し、サブネットを追加し、ネットワーク カードを削除します。

<<:  dl、dt、dd はいつ使用するのが適切ですか?

>>:  CSS変数を使用して、クールで素晴らしいフローティング効果を実現します。

推薦する

Jupyter Notebook で JavaScript を実行する方法

その後、VSC で Jupyter Notebook を使用する方法も追加しました...アナコンダを...

Bツリー挿入プロセスの概要

前回の記事 https://www.jb51.net/article/154153.htm では、B...

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結し...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

nginx proxy_cache バッチキャッシュクリアスクリプトの紹介

前書き: 以前、公式の nginx proxy_cache を CDN 静的キャッシュとして使用して...

Docker Compose マルチコンテナデプロイメントの実装

目次1. WordPressの導入1. 環境を整える(II) イメージを実行するDocker の作成...

HTMLページ埋め込み動画とJSコントロール切り替え動画例の詳しい説明

まず、ページにビデオを埋め込むための HTML コードは次のとおりです。コードをコピーコードは次のと...

泡の小さな鋭角効果を実現するCSS

効果画像(境界線の色が薄すぎるので、{} で囲みます): { }参考リンク Pure CSS バブル...

MLSQLコンパイル時権限制御例の詳細な説明

序文MySQL の権限を簡単に理解すると、MySQL では自分の能力の範囲内で操作が許可され、その限...

すべてまたは逆の選択機能を実現するJavaScript

この記事では、全選択または選択を反転する機能を実現するためのJavaScriptの具体的なコードを参...

最新の MySQL 5.7.23 のインストールと設定のグラフィックチュートリアル

2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...

フロントエンド Vue ユニットテストを始める

目次1. ユニットテストはなぜ必要なのでしょうか? 2. ユニットテストの書き方3. テストツール4...

原因不明のMySqlサービス消失の解決策

原因不明のMySqlサービス消失の解決策先ほど、MySQL-Front が突然 MySql を開けな...

MySQLスローログクエリの詳細な説明

遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...