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

推薦する

Dreamweaver8を使用してウェブサイトのファイルをチェックして整理する方法

Dreamweaver8 を使用して独自の Web サイトを作成する目的は何ですか?インターネットに...

JavaScript オブジェクト指向クラス継承ケースの説明

1. オブジェクト指向のクラス継承これまでの章では、JavaScript のオブジェクト モデルがプ...

Nginx バージョンのスムーズなアップグレードソリューションの詳細説明

目次背景: Nginx スムーズ アップグレード ソリューションフォールバック手順要約する背景:負荷...

MySQL 5.7 をインストールした後にコマンドライン ウィンドウを開くとクラッシュする問題の解決方法

序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...

Linux でハードディスクのサイズを確認し、ハードディスクをマウントする方法

Linux には、マウントされたハードディスクとマウントされていないハードディスクの 2 種類のハー...

HTML検証 HTML検証

HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...

Docker イメージの最適化 (1.16GB から 22.4MB)

目次最適化の第一歩: 軽量ベースイメージの使用第2段階の最適化:多段階構築Docker は、ソフトウ...

支払いカウントダウンを実現し、ホームページに戻るためのjs

ホーム ページに戻るための支払いカウントダウン ケースの概要: シンプルな js 構文、getEle...

Linux で rsync を使用する方法

目次1. はじめに2. インストール3. 基本的な使い方3.1、-rパラメータ3.2、-aパラメータ...

Linux での中国語入力方法の問題を素早く解決する

背景: 最近、資産報告関連の機能に取り組んでおり、中国語入力をサポートする必要があります。通常のショ...

CSS で波の効果を作成するためのアイデア

以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...

jsはテーブルの追加と削除の操作を動的に実装します

この記事の例では、jsでテーブルを動的に追加および削除するための具体的なコードを参考までに共有してい...

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...