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変数を使用して、クールで素晴らしいフローティング効果を実現します。

推薦する

Vue/React シングルページ アプリケーションをリフレッシュなしで復元するソリューション

目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...

ベースタグとは何ですか? また、それは何をするのですか?

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

フロントエンドの面接の質問の最も包括的なコレクション

HTML+CSS 1. WEB 標準と W3C の理解と知識<br /> タグを閉じ、小...

単一行関数と文字計算日付プロセス制御を説明する MySQL の例

目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...

例を通してBRタグとPタグの違いを理解する

<br />改行タグの使用<br>改行タグ<br>は終わりのない...

Linux sar コマンドの使用方法とコード例の分析

1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...

RedisとMySQLの違いを簡単に説明してください

MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...

vue3 のさまざまな構文形式を比較したサンプルコード

デフォルトのテンプレートメソッドはvue2に似ており、コンポーネント内のセットアップ関数を使用します...

1 つの記事で Nginx の現在の制限を理解する (簡単な実装)

Nginx は現在、最も人気のあるロード バランサーの 1 つです。インターネット トラフィックの...

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

WindowsにOpenSSHをインストールし、SSHキーを生成してLinuxサーバーにログインします。

SSH の正式名称は Secure SHell です。 SSH を使用すると、送信されるすべてのデ...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...