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

推薦する

MySQL のストレージ エンジンの違いと比較

MyISAM ストレージエンジンMyISAM は ISAM ストレージ エンジンに基づいており、それ...

MYSQLについては、データ型と操作テーブルを知る必要があります

データ型と操作データテーブル1.1 MySQL 型: 整数 1.2 MySQL データ型: 浮動小数...

MySQLデータベースのタイムアウト設定を構成する方法の例

目次序文1. JDBCタイムアウト設定2. 接続プールのタイムアウト設定3. MyBatisクエリの...

Centos7でmysql6の初期化インストールパスワードをインストールする方法

1. まずデータベースサーバーを停止しますサービスmysqld停止2.vim /etc/my.cnf...

srcまたはcss背景画像のurl値はbase64でエンコードされたコードです

ウェブ上の一部の画像の src または CSS 背景画像 URL の後に、data:image/pn...

Nginxはドメイン名のアクセス方法を定義しています

最近Nginxを構築しているのですが、ドメイン名でアクセスできません。 nginx 構成ファイル n...

JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)

JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...

Vueプロジェクトでスケルトンスクリーンを使用する方法

現在、アプリケーション開発は基本的にフロントエンドとバックエンドに分離されています。主流のフロントエ...

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

js はランダムロールコールを実装します

この記事では、ランダムロールコールを実装するためのjsの具体的なコードを参考までに共有します。具体的...

Linux で g++ を使用してプログラムをコンパイルする際の -I (大文字の i)、-L (大文字の l)、-l (小文字の l) の機能の詳細な説明

初心者の Linux ユーザーとして、私は単純なgcc/g++操作を何度も使用してきましたが、少し複...

Linux で open-vswitch をインストールおよびアンインストールする方法

1. ソースコードからovsをコンパイルしてインストールします。依存関係をインストールします: # ...

Docker実行コンテナが作成状態にある問題についての簡単な説明

最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...

Vueフィルターとカスタム命令の使用

目次フィルター01.とは02. やり方(1)フィルターを定義する(2)使用方法(3)フィルタパラメー...

HTML テーブル マークアップ チュートリアル (9): セル間隔属性 CELLSPACING

テーブルがコンパクトになりすぎないように、テーブル内のセル間に一定の距離を設定できます。基本的な構文...