docker がホストに ping できない場合はどうすればよいですか?
Docker がホストに ping できない問題の解決策: 1. daemon.json を変更します; 2. ファイアウォールをオフにします; 3. sysctl.conf を変更します; 4. ネットワーク ブリッジをリセットします。
この記事の動作環境: ubuntu16.04 システム、Docker 20.10.11、Dell G3 コンピューター。
#Docker がホストに ping できない場合はどうすればよいですか?
Docker ブリッジ モードでホストに ping できない 問題の説明:Dockerネットワークモードは4種類に分かれており、通常、設定しない場合はデフォルトで
bridgeシングル ブリッジ モードの場合、コンテナーは独立した
network Namespace を使用し、
docker0 仮想ネットワーク カードに接続されます。
docker0 ブリッジおよび
Iptables nat テーブル構成を介してホストと通信します。
この時点で、要塞マシンでテストし、
busybox を使用してテストします:
# 拉取镜像 docker pull busybox # 运行容器 docker run -itd --name busy_bridge busybox
docker network Inspection Bridge ネットワークを確認します:
## ネットワーク構成は成功しました。コンテナ内に移動して、
を確認します。ip
が割り当てられていることがわかりますが、 ping
外部ネットワークに ping を実行すると失敗し、外部ネットワークに接続できません: しかし、同じテストをローカルまたは Alibaba Cloud で実行すると、ネットワークに接続できることがわかります。何が問題ですか?
問題分析:
インターネットで情報を見つけた後、多くの人は
dockerを再起動すると接続できるようになります。通常、これは特定の構成が変更され、その後、再起動は機能しますが、ここでは効果がありません。一般に、変更にはいくつかの種類があります。以下で 1 つずつ試してみてください:
- Modify
- daemon.json
を変更する必要があります。コマンド vim /etc/ を使用してください。 docker/daemon.json
を入力後に追加: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">{"bip":"172.16.10.1/24"}</pre><div class="contentsignin">ログイン後にコピー</div></div>
を再起動してコンテナを作成するとアクセスできますが、の間にはまったく競合がありませんip
は元の要塞ホストとコンテナーによって割り当てられますが、このメソッドは機能しません。
- ファイアウォールを無効にする
- コンテナはブリッジ経由でホストにアクセスできないため、外部ネットワークにアクセスできません。ファイアウォールが無効になっている可能性があります。アクセスをブロックするため、ファイアウォールをオフにするか、特定のポートを開くことができます。サーバーでテストし、ファイアウォールをオンにしたところ、コンテナが Baidu ホームページとホストにアクセスできないことがわかりました。ファイアウォールを閉じて
を再起動すると、コンテナに正常にアクセスできるようになりました。 ただし、Bastion マシンのファイアウォールは元々オフになっているため、この方法は役に立ちません。
- Modify
- sysctl.conf
docker ホストにマッピングされたポートに接続できず、
docker は内部的に外部ホストに接続できません。## を使用してください。 #docker info
コマンドで情報を確認すると、次のエラーが表示されます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">WARNING: IPv4 forwarding is disabled
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled</pre><div class="contentsignin">ログイン後にコピー</div></div>
コマンド vim /etc/sysctl.conf
を使用して設定ファイルを編集し、次のコードを追加します。ファイル:
net.bridge.bridge-nf-call-ip6tables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-arptables=1 net.ipv4.ip_forward=1
その後、コマンド systemctl restart network
ネットワークを再起動し、
を再度確認すると、警告が消えます。しかし、それでも役に立たず、要塞マシン上のコンテナは依然としてブリッジ経由でホスト マシンにアクセスできず、外部ネットワークにもアクセスできません。 ブリッジをリセットします
- コマンドyum install Bridge-utils を使用してツールをインストールした後、次を使用します
ネットワーク ブリッジを確認すると、次のことがわかります。
docker network create [ブリッジ名]
コマンドを使用して、新しいネットワーク ブリッジを作成し、生成されたネットワーク ブリッジを見つけます。 ブリッジ ID
はまだ 8000.0000000000
です。新しいブリッジ上にコンテナを作成し、再度確認しても変化はありません。これはおそらくブリッジに問題があることを示しています。 再度テストします この時点で、ブリッジ
ip は
172.17.0.1
、コンテナ ip
は 172.0.0.2
です。ホスト関数が見つかりました。 ping
ネットワーク ブリッジは接続されていますが、コンテナーは接続できません。コンテナーはネットワーク ブリッジに接続できず、外部ネットワークはおろかホストにも接続できません。ネットワークブリッジに問題がある可能性があります。 <h3 id="问题解决">问题解决</h3>
<p> 这里<code>docker network
生成新的网桥不行,说明docker
的network
存在问题,我们利用刚才下载的bridge-utils
来创建网桥。
首先暂停docker
服务,利用指令:
service docker stop
添加网桥:
brctl addbr br0
添加ip
字段:
ip addr add 172.16.0.1/24 dev br0
启用网桥br0
:
ip link set dev br0 up
查看网络br0
:
修改docker
默认网桥:
vim /etc/docker/daemon.json
添加字段:
"bridge":"br0"
重启docker
:
service docker start
此时查看网桥:
在没有挂载容器前,依旧是8000.000000000000
。运行测试容器:
docker run -itd --name busy_test busybox
查看docker がホストに ping できない場合はどうすればよいですか?:
此时容器挂载在网桥上了,再次查看网桥id
:
说明已经其作用,进入测试容器内部,docker がホストに ping できない場合はどうすればよいですか?:
成功!
补充:这里使用docker network
新建网桥,没有用,发现新建网桥挂载容器后,其bridge id
依旧不变,没有起作用,说明堡垒机上的docker network
可能存在问题。
问题补充:
上面的问题是创建自定义网桥,然后在自定义网桥上连接容器a
和b
,结果宿主机无法ping
通a
、b
,且进入容器内部后,两个容器无法ping
通自定义网络,但能彼此相通。
查了很多资料,发现了这篇文章。博主说问题原因是系统内核的网桥模块bridge.ko
加载失败导致,解决问题的方案是升级内核或升级系统。
升级centos
内核参考这篇。
升级完成后,重装Docker
,自定义网桥和容器,成功!不再有网络问题。
推荐学习:《docker视频教程》
以上がdocker がホストに ping できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

国内のミラーソースに切り替えることができます。手順は次のとおりです。1。構成ファイル/etc/docker/daemon.jsonを編集し、ミラーソースアドレスを追加します。 2。保存して終了した後、Docker Service Sudo SystemCtlを再起動してDockerを再起動して、画像のダウンロード速度と安定性を改善します。

Dockerログを表示する方法は次のとおりです。たとえば、Docker Logsコマンドを使用します。たとえば、Docker logs container_name docker execコマンドを使用して /bin /shを実行し、logファイルを表示します。 cat /var/log/container_name.log docker-compose -f docker-comのDocker ComposeのDocker-Composeログを使用します。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerプライベートリポジトリを構築して、コンテナ画像を安全に保存および管理し、厳格な制御とセキュリティを提供できます。手順には、リポジトリの作成、アクセスの付与、リポジトリの展開、画像のプッシュ、および画像の引くなどがあります。利点には、セキュリティ、バージョン制御、ネットワークトラフィックの削減、カスタマイズが含まれます。

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)
