GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntu 18.04 に docker-ce をインストールすると、ホストのインターネット接続が切断される

ここに問題があります:

Docker は範囲 172.17.0.1/16 を割り当てました あなたの docker0 に インターフェース。これには、172.17.0.1 からのすべてのアドレスが含まれます 172.17.255.255 まで .この範囲には DNS サーバー (172.17.100.3) が含まれることに注意してください。 そして 172.17.100.70 )。あなたが抱えているのはルーティングの問題です:

ホストが DNS サーバーにアクセスする必要があるときはいつでも、同じネットワーク (docker0) 上に既にインターフェイスがあることがわかります。 )、そのインターフェイスを使用してパケットをルーティングしようとします...もちろんどこにも行きません.DNSが機能しなくなるのはそのためです.

Docker には、自動選択プロセスからアドレス範囲を除外するための単純なメカニズムがないため、問題を解決するには、おそらく次の 2 つのことを行う必要があります:

まず、docker0 のアドレスを明示的に設定します。 あなたの /etc/docker/daemon.json で .内部ネットワークと競合しないネットワークを使用してください。例:

{
  "bip": "172.31.0.1/16"
}

Docker を再起動する必要があります。

次に、Docker がユーザー定義ネットワーク (docker network create を使用して明示的に作成したネットワーク) に対して同じネットワーク範囲を選択しないようにします。 または暗黙のうちに docker-compose などを使用する または docker stack ... )、新しいネットワークを作成し、それを使用しない:

docker network create --subnet 172.17.0.0/16 --config-only do_not_use

これにより、問題が解決され、将来的に元に戻るのを防ぐことができます。

更新

実際、Docker はこれを達成するための間違いなく優れた方法を文書化しています。「Docker ネットワークの作成」中に Docker が選択するネットワーク アドレス範囲に影響を与えるにはどうすればよいですか?

これには、システムに永続的な静的ルートを設定する必要がありますが、これは Linux ディストリビューションによって異なります。


Linux
  1. UbuntuとDebianへのDockerのインストールと使用

  2. Docker

  3. Ubuntu 18.04にDockerをインストールする方法は?

  1. ホストから Docker コンテナのネットワーク名前空間にアクセスする方法

  2. Ubuntu で docker を実行中:マウントされたホスト ボリュームはコンテナーから書き込み可能ではありません

  3. CentOS 8 の Docker CE コンテナーとの間のネットワーク接続がない

  1. Ubuntu Gnome 15.10でネットワークDockerをクリーンにセットアップする方法は?

  2. Ubuntu14.04にQt5.5.1をインストールする–ターミナルでQt.network.sslエラーをスローしますか?

  3. Dockerのインストール(Ubuntu)