不能从主机ping通docker容器IP

我无能为力:

可以从Ubuntu容器ping默认dockernetworking的网关ip,但不能从主机ping容器,我已经试过在这里看,但这是相反的东西。 我想从我的主机访问我的容器。

我曾经尝试过

所以我使用这个创build了一个自定义networking:

docker network create --driver=bridge --subnet=192.168.0.1/24 --ip-range=192.168.0.130/24 --gateway=192.168.0.1 br0 

这是新增的networking

 $ docker network ls NETWORK ID NAME DRIVER 38bcca85e37a bridge bridge 202ace7d3e0c none null 512b3a6dc77f host host d5f4b00e3281 br0 bridge 

并通过检查命令validation:

 $ docker network inspect br0 [ { "Name": "br0", "Id": "d5f4b00e3281c27e6d5879ac37463b6d8af728944dc7d3fbc23c25092020c7c7", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.0.1/24", "IPRange": "192.168.0.130/24", "Gateway": "192.168.0.1" } ] }, "Containers": {}, "Options": {} } ] 

然后使用以下命令运行我的容器:

 docker run -i -d --name=rc --net br0 --ip 192.168.0.150 -v /var/log/restcomm/:/var/log/restcomm/ -e STATIC_ADDRESS="192.168.0.150" -e ENVCONFURL="https://raw.githubusercontent.com/RestComm/Restcomm-Docker/master/scripts/restcomm_env_locally.sh" -p 80:80 -p 443:443 -p 9990:9990 -p 5060:5060 -p 5061:5061 -p 5062:5062 -p 5063:5063 -p 5060:5060/udp -p 65000-65050:65000-65050/udp restcomm/restcomm:latest 

然后我login到正在运行的容器并运行ifconfig命令

 $ docker exec -it a09a4c120999 bash root@8412c266634d:/# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:c0:a8:00:96 inet addr:192.168.0.150 Bcast:0.0.0.0 Mask:255.255.255.0 inet6 addr: fe80::42:c0ff:fea8:96/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6 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:508 (508.0 B) TX bytes:508 (508.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:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:142 (142.0 B) TX bytes:142 (142.0 B) root@a09a4c120999:/# exit 

这里的问题是,即使这个容器的IP地址设置为192.168.0.150,但仍然无法ping IP地址为192.168.0.115的主机。 另外上面的命令,我必须快速运行,因为你可以看到容器本身退出,所以我重新启动容器,一次又一次地尝试运行一个命令,如果我尝试再次login没有重新启动,它会给出以下错误:

 $ docker exec -it e0783d69b96f bash Error response from daemon: Container e0783d69b96f8e7ff4a17f76d0066b78c4b54a6817de7526a514f42a6af4640e is not running: Exited (1) 1 seconds ago 

我也通过列出所有容器来validation这一点

 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e0783d69b96f restcomm/restcomm:latest "/sbin/my_init" 5 minutes ago Exited (1) 4 minutes ago rc 

我在Windows 10上运行docker,并按照这些说明操作

编辑:容器退出本身后,我添加此自定义networking,所以可能有尝试添加networking,但这个命令,我已经发现在他们的官方教程从这里

所以有两个问题

  1. 即使我可以指定我想要的IP,我仍然无法ping和从容器和主机
  2. 添加自定义networking后,容器自身存在

编辑:

感谢@VonC我通过添加推荐的开关来解决第二个问题,是的,这两个是不相关的