使用IP不在vpc内的docker

时间:2018-10-13 02:16:12

标签: amazon-web-services docker networking subnet vpc

所以我无法弄清楚为什么我不能从公共IP连接到我的容器,直到我发现docker端口正在侦听的IP ...如果您看到ifconfig显示172 ... vpc ...您可以在下面看到即时消息我的vpc中没有使用任何172 ..... im不知道这是从哪里得到的...我应该在新的vpn中创建一个新的子网并只是创建一个ami和在符合子网的新vpc中启动它?我可以更改docker ip / port的监听状态吗?

ifconfig
br-387bdd8b6fc4 Link encap:Ethernet HWaddr 02:42:69:A3:BA:A9
inet addr:172.18.0.1 Bcast:172.18.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:69ff:fea3:baa9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:114269 errors:0 dropped:0 overruns:0 frame:0
TX packets:83675 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:11431231 (10.9 MiB) TX bytes:36504449 (34.8 MiB)

docker0 Link encap:Ethernet HWaddr 02:42:65:A6:7C:B3
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 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:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

eth0 Link encap:Ethernet HWaddr 02:77:F6:7A:50:A6
inet addr:10.0.140.193 Bcast:10.0.143.255 Mask:255.255.240.0
inet6 addr: fe80::77:f6ff:fe7a:50a6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:153720 errors:0 dropped:0 overruns:0 frame:0
TX packets:65773 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:209782581 (200.0 MiB) TX bytes:5618173 (5.3 MiB)

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:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2066 (2.0 KiB) TX bytes:2066 (2.0 KiB)

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 172.18.0.11 tcp dpt:389
ACCEPT tcp -- 0.0.0.0/0 172.18.0.13 tcp dpt:9043
ACCEPT tcp -- 0.0.0.0/0 172.18.0.13 tcp dpt:7777
ACCEPT tcp -- 0.0.0.0/0 172.18.0.3 tcp dpt:9443
ACCEPT tcp -- 0.0.0.0/0 172.18.0.7 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 172.18.0.8 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 172.18.0.9 tcp dpt:443

DockerSubnet1-Public 10.0.1.0/24
DockerSubnet2-Public 10.0.2.0/24
DockerSubnet3-Private 10.0.3.0/24
DockerSubnet4-Private 10.0.4.0/24
Private subnet 1A 10.0.0.0/19
Private subnet 2A 10.0.32.0/19
Public subnet 1 10.0.128.0/20
Public subnet 2 10.0.144.0/20 

2 个答案:

答案 0 :(得分:1)

使用Docker网络的标准方法是使用docker run -p命令行选项。如果您运行:

docker run -p 8888:80 myimage

Docker会自动设置一个从主机上的端口8888转发到容器中的端口80的端口。

如果主机有多个接口(尽管未在ifconfig输出中单独显示,则提示您是“公共IP”),您可以通过添加IP地址将其设置为仅侦听其中一个接口< / p>

docker run -p 10.0.140.193:8888:80 myimage

Docker内部的172.18.0.0/16地址实际上是无用的。它们是在容器之间相互交谈时的重要实现细节,但是Docker提供了内部DNS服务将容器名称解析为内部IP地址。在弄清楚如何从“外部”与容器对话时,您不需要这些IP地址。

您问题中的术语强烈暗示着Amazon Web Services。这里的一个常见问题是您的EC2实例在不允许入站连接的安全组(网络级防火墙)下运行。

答案 1 :(得分:0)

我从来没有弄清楚为什么。.i确实允许安全组和网络acls等中的所有入站和出站流量。我从实例中创建了一个ami,将其复制到具有新建vpc的另一个区域,并部署在那里。有用!!将其升级到AWS VPC。 感谢您对172.x的澄清,我不知道这在docker容器之间...现在变得很有意义。