Home > Backend Development > PHP Tutorial > docker容器内部无法连接宿主机所在局域网

docker容器内部无法连接宿主机所在局域网

WBOY
Release: 2016-06-06 20:07:57
Original
5553 people have browsed it

  1. 使用centos镜像创建容器,在容器内部署php项目,由于要向宿主机所在局域网的另一台服务器请求接口服务,发起的http请求始终连接不上,但可以连接国际互联网。

2.
宿主机IP:172.20.20.152,
请求接口的目标服务器IP:172.17.3.97

创建Docker容器的命令:
docker run -p 80:80 --name=mycns -it eeb3a076a0be /bin/bash

进入容器后,执行命令:
ping 172.17.3.97
返回结果是:
From 172.17.0.3 icmp_seq=1 Destination Host Unreachable
From 172.17.0.3 icmp_seq=2 Destination Host Unreachable
From 172.17.0.3 icmp_seq=3 Destination Host Unreachable
From 172.17.0.3 icmp_seq=4 Destination Host Unreachable
From 172.17.0.3 icmp_seq=5 Destination Host Unreachable
From 172.17.0.3 icmp_seq=6 Destination Host Unreachable
From 172.17.0.3 icmp_seq=8 Destination Host Unreachable
From 172.17.0.3 icmp_seq=9 Destination Host Unreachable

安装docker版本信息:
docker version
返回:
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64

3.
宿主机执行ifconfig命令,返回:
docker0 Link encap:Ethernet HWaddr EE:25:C5:DA:10:47

<code>      inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
      inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:64400 errors:0 dropped:0 overruns:0 frame:0
      TX packets:69800 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:3945235 (3.7 MiB)  TX bytes:105962604 (101.0 MiB)
</code>
Copy after login
Copy after login

eth0 Link encap:Ethernet HWaddr F2:3D:F0:2B:43:31

<code>      inet addr:172.20.20.152  Bcast:172.20.255.255  Mask:255.255.0.0
      inet6 addr: fe80::f03d:f0ff:fe2b:4331/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:29702118 errors:0 dropped:0 overruns:0 frame:0
      TX packets:583992 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2997801386 (2.7 GiB)  TX bytes:73288231 (69.8 MiB)
</code>
Copy after login
Copy after login

lo Link encap:Local Loopback

<code>      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:7059 errors:0 dropped:0 overruns:0 frame:0
      TX packets:7059 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:4819120 (4.5 MiB)  TX bytes:4819120 (4.5 MiB)
</code>
Copy after login
Copy after login

veth50f5616 Link encap:Ethernet HWaddr EE:25:C5:DA:10:47

<code>      inet6 addr: fe80::ec25:c5ff:feda:1047/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:17 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:1014 (1014.0 b)  TX bytes:468 (468.0 b)
</code>
Copy after login
Copy after login

4.
宿主机本可以正常连接172.17.3.97这台机器,但docker服务启动后,无法正常连接。

来一位大神帮看看呵呵

回复内容:

  1. 使用centos镜像创建容器,在容器内部署php项目,由于要向宿主机所在局域网的另一台服务器请求接口服务,发起的http请求始终连接不上,但可以连接国际互联网。

2.
宿主机IP:172.20.20.152,
请求接口的目标服务器IP:172.17.3.97

创建Docker容器的命令:
docker run -p 80:80 --name=mycns -it eeb3a076a0be /bin/bash

进入容器后,执行命令:
ping 172.17.3.97
返回结果是:
From 172.17.0.3 icmp_seq=1 Destination Host Unreachable
From 172.17.0.3 icmp_seq=2 Destination Host Unreachable
From 172.17.0.3 icmp_seq=3 Destination Host Unreachable
From 172.17.0.3 icmp_seq=4 Destination Host Unreachable
From 172.17.0.3 icmp_seq=5 Destination Host Unreachable
From 172.17.0.3 icmp_seq=6 Destination Host Unreachable
From 172.17.0.3 icmp_seq=8 Destination Host Unreachable
From 172.17.0.3 icmp_seq=9 Destination Host Unreachable

安装docker版本信息:
docker version
返回:
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64

3.
宿主机执行ifconfig命令,返回:
docker0 Link encap:Ethernet HWaddr EE:25:C5:DA:10:47

<code>      inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
      inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:64400 errors:0 dropped:0 overruns:0 frame:0
      TX packets:69800 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:3945235 (3.7 MiB)  TX bytes:105962604 (101.0 MiB)
</code>
Copy after login
Copy after login

eth0 Link encap:Ethernet HWaddr F2:3D:F0:2B:43:31

<code>      inet addr:172.20.20.152  Bcast:172.20.255.255  Mask:255.255.0.0
      inet6 addr: fe80::f03d:f0ff:fe2b:4331/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:29702118 errors:0 dropped:0 overruns:0 frame:0
      TX packets:583992 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2997801386 (2.7 GiB)  TX bytes:73288231 (69.8 MiB)
</code>
Copy after login
Copy after login

lo Link encap:Local Loopback

<code>      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:7059 errors:0 dropped:0 overruns:0 frame:0
      TX packets:7059 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:4819120 (4.5 MiB)  TX bytes:4819120 (4.5 MiB)
</code>
Copy after login
Copy after login

veth50f5616 Link encap:Ethernet HWaddr EE:25:C5:DA:10:47

<code>      inet6 addr: fe80::ec25:c5ff:feda:1047/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:17 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:1014 (1014.0 b)  TX bytes:468 (468.0 b)
</code>
Copy after login
Copy after login

4.
宿主机本可以正常连接172.17.3.97这台机器,但docker服务启动后,无法正常连接。

来一位大神帮看看呵呵

找到原因了: http://dev.bidlust.com/?p=103

你可以不适用桥接网络,使用仅主机网络,这样就和主机一模一样了,docker run添加参数:--net host

应该是防火墙给拦了

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template