web-dev-qa-db-ja.com

Dockerコンテナは外の世界にpingできません-iptables

docker17.06の探索。

Centos 7にdockerをインストールし、コンテナーを作成しました。デフォルトのブリッジでコンテナを起動しました。両方のホストアダプタにpingを実行できますが、外部の世界にはpingを実行できません。 www.google.com

すべてのアドバイスは、古いバージョンのDockerとそのiptables設定に基づいています。

外の世界にpingを送信する方法を理解したいのですが、何が必要ですか?

TIA!

3
user1945022

ホストマシンからwww.google.comにpingを実行できる場合は、次の手順に従ってください。ホストマシンで実行します。

Sudo ip addr show docker0 

次のような出力が得られます。

inet 172.17.2.1/16 scope global docker0

Docker Hostは、docker0ネットワークインターフェイスでIPアドレス172.17.2.1を持っています。

次に、コンテナを起動します。

docker run --rm -it ubuntu:trusty bash 

実行します

ip addr show eth0

出力には以下が含まれます:

inet 172.17.1.29/16 scope global eth0

コンテナのIPアドレスは172.17.1.29です。次に、ルーティングテーブルを見てください。run:

route

出力には次のものが含まれます。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.17.2.1     0.0.0.0         UG    0      0        0 eth0

これは、Dockerホスト172.17.2.1のIPアドレスがデフォルトルートとして設定されており、コンテナからアクセスできることを意味します。

今すぐホストマシンのIPにpingを実行してみてください:

root@e21b5c211a0c:/# ping 172.17.2.1
PING 172.17.2.1 (172.17.2.1) 56(84) bytes of data.
64 bytes from 172.17.2.1: icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from 172.17.2.1: icmp_seq=2 ttl=64 time=0.211 ms
64 bytes from 172.17.2.1: icmp_seq=3 ttl=64 time=0.166 ms 

これが機能する場合は、おそらくwww.google.comにpingを実行できます。

それが役立つことを願っています!

8
Shashi Bhushan

既存のiptablesを確認してください:

 iptables --list

ソースと宛先の詳細を含むiptablesのリストが表示されます。

target        prot   opt    source             destination

DOCKER-USER   all    --    anywhere            anywhere

ソースと宛先の両方でanywhereの場合、外部IPにpingを実行する必要があります(デフォルトでは、anywhere

そうでない場合は、このコマンドを使用してiptable(DOCKER-USER)を設定します

iptables -I DOCKER-USER -i eth0 -s 0.0.0.0/0 -j ACCEPT

これがお役に立てば幸いです。

0
Shashi Bhushan