2017-03-17 12 views
-1

ネットワーキングは私の強みの1つではありません。インターネットにアクセスできないユーザー定義のネットワーク上のドッカーコンテナをデバッグする方法

私はホストOSとしてCentos7を使用しています。ドッカーのバージョン17.03.0-ce、build 60ccb22。

私が使用してネットワークを作成する:

docker network create --driver=bridge --subnet=10.19.0.0/16 development

Iが使用コンテナを実行する:

sudo docker run -dit --name=php-nginx1 --net=development --ip=10.19.74.23 --volume /vagrant/wordpress:/var/www/wordpress --expose 80 php-nginx

Iが容器結果内から216.58.216.36(グーグル)にpingを実行する場合は、次のとおり

PING 216.58.216.36 (216.58.216.36) 56(84) bytes of data. From 10.19.74.23 icmp_seq=1 Destination Host Unreachable

ネットワークを指定せずにコンテナを実行すると、問題なく216.58.216.36をpingできます。ホスト上でifconfigコマンドの

結果は

docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 
    inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 
    inet6 fe80::42:7fff:fee2:8f4e prefixlen 64 scopeid 0x20<link> 
    ether 02:42:7f:e2:8f:4e txqueuelen 0 (Ethernet) 
    RX packets 13674 bytes 609692 (595.4 KiB) 
    RX errors 0 dropped 0 overruns 0 frame 0 
    TX packets 16644 bytes 182882110 (174.4 MiB) 
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
    inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 
    inet6 fe80::5054:ff:fe22:5b53 prefixlen 64 scopeid 0x20<link> 
    ether 52:54:00:22:5b:53 txqueuelen 1000 (Ethernet) 
    RX packets 322262 bytes 409758704 (390.7 MiB) 
    RX errors 0 dropped 0 overruns 0 frame 0 
    TX packets 47924 bytes 3329709 (3.1 MiB) 
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 
    inet 10.19.74.21 netmask 255.255.255.0 broadcast 10.19.74.255 
    inet6 fe80::a00:27ff:feb9:e12 prefixlen 64 scopeid 0x20<link> 
    ether 08:00:27:b9:0e:12 txqueuelen 1000 (Ethernet) 
    RX packets 2 bytes 120 (120.0 B) 
    RX errors 0 dropped 0 overruns 0 frame 0 
    TX packets 28 bytes 2016 (1.9 KiB) 
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 
    inet 127.0.0.1 netmask 255.0.0.0 
    inet6 ::1 prefixlen 128 scopeid 0x10<host> 
    loop txqueuelen 1 (Local Loopback) 
    RX packets 84 bytes 7244 (7.0 KiB) 
    RX errors 0 dropped 0 overruns 0 frame 0 
    TX packets 84 bytes 7244 (7.0 KiB) 
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

ifconfigコマンドは、容器を形成されているホストから

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   10.19.0.1  0.0.0.0   UG 0  0  0 eth0 
10.19.0.0  *    255.255.0.0  U  0  0  0 eth0 

経路:

eth0  Link encap:Ethernet HWaddr 02:42:0a:13:4a:17 
     inet addr:10.19.74.23 Bcast:0.0.0.0 Mask:255.255.0.0 
     inet6 addr: fe80::42:aff:fe13:4a17/64 Scope:Link 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
     RX packets:16 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:0 
     RX bytes:1296 (1.2 KB) TX bytes:648 (648.0 B) 

lo  Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0 
     inet6 addr: ::1/128 Scope:Host 
     UP LOOPBACK RUNNING MTU:65536 Metric:1 
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
     collisions:0 txqueuelen:1 
     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

ルートにcountainer結果を形成します結果:

Kernel IP routing table 
Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   gateway   0.0.0.0   UG 100 0  0 eth0 
10.0.2.0  0.0.0.0   255.255.255.0 U  100 0  0 eth0 
10.19.0.0  0.0.0.0   255.255.0.0  U  0  0  0 br- ca991944118f 
10.19.74.0  0.0.0.0   255.255.255.0 U  0  0  0 eth1 
link-local  0.0.0.0   255.255.0.0  U  1003 0  0 eth1 
172.17.0.0  0.0.0.0   255.255.0.0  U  0  0  0 docker0 

私は下垂体について何をすべきかわかりません。私は、インターネットにアクセスできないドッカーコンテナに関する他の質問を見てきましたが、それらはすべて、コンテナが外部アドレスに全くアクセスできないことに関連しているようです。このコンテナは、作成したネットワークに割り当てられていない場合はインターネットにアクセスできますが、作成したネットワークに接続している場合はアクセスできません。

私のネットワークの知識は限られているので、私はこの問題のデバッグをどこから始めるのが苦労しています。この特定の問題に対する解決策は素晴らしいですが、この問題をデバッグする方法はさらに優れています。

この問題をどのようにデバッグできますか?

+0

私はワードプレスコンテナの手動ネットワーキング設定を通過する必要がほとんどゼロの理由を考えることができます。 – user2105103

+0

手動ネットワーキング設定を使用することには、今のところ私にとって問題はありません。手動ネットワーキングを使用しない場合は、これを設計することをお勧めしますか? –

+0

携帯性.... – user2105103

答えて

0

eth1と同じIPサブネットを持つドッカーネットワークとコンテナを設定しようとしているようです。これは、適切にルーティングすることができないトラフィックをもたらします。なぜなら、linuxはトラフィックを送信する必要がある2つのうちどれを知るのか分からないからです。 (経験したと思われる)ベストケースは、トラフィックをeth1に送信し続け、コンテナは通信できません。最悪のケースでは、eth1経由で何にでも話すことはできません。

解決策は、コンテナを軽量VMとして扱うことではないためです。未使用のサブネットを使用してドッカー内でそれらをスピンアップします(ドッカーは、強制しないと、作成したネットワークで自動的にこれを実行しようとします)。コンテナがそのネットワーク内の任意のランダムなIPを取得できるようにします。また、ドッカーコンテナにアクセスする必要がある外部接続の場合、ドッカーホストにポートを公開し、外部のユーザーがコンテナと通信するためにホスト上のそのポートに接続するようにします。

ドッカーのnetworking user guideには、ドッキングステーション内でのネットワークの仕組みと使用するコマンドの詳細があります。

+0

ありがとうございます。それが問題でした。 –

関連する問題