【问题标题】:Unable to connect docker container to internet无法将 docker 容器连接到互联网
【发布时间】:2018-07-27 11:20:33
【问题描述】:

我使用命令创建了一个自定义网络:

docker network create --driver=bridge --subnet=192.168.1.0/16 --gateway=192.168.1.1 -o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" -o "com.docker.network.bridge.enable_icc"="true" -o "com.docker.network.bridge.enable_ip_masquerade"="true" my-net

创建后我使用 docker compose 创建了 docker 容器:

version: "3"
services:
web:
build: './UI'
ports:
 - "80:80"
tty: true
links:
 - service
networks:
 my-net:
  ipv4_address: 192.168.1.2

service:
build: './Service'
ports:
 - "8090:8090"
tty: true
networks:
 my-net:
  ipv4_address: 192.168.1.3

networks:
my-net:
external:
  name: my-net

现在,当我在内部 ping 容器时,我得到了响应。但是当我尝试 ping google.com 时,容器无法 ping 它。

我也运行了这个命令,但没有成功。

sysctl net.ipv4.conf.all.forwarding=1

【问题讨论】:

标签: docker docker-compose docker-networking


【解决方案1】:

我前段时间遇到过这个问题,一个简单的解决方法是在 docker-compose.yml 中向您的服务添加外部 DNS 条目(在本例中是 Google 的):

services:
  web:
    ...
    dns:
      - 8.8.8.8
      - 4.4.4.4

这很快解决了我的问题,至少对于开发/测试环境而言。

我知道可能有更复杂(并且可能更安全)的方法,但这确实解决了我的问题。我相信创建一个bridge network 可以解决这个问题,但我还没有测试过。

防火墙配置也可能存在问题(即使在这种情况下 pign 也可能不起作用)。有关它的更多信息,请参阅 Docker 论坛(Windows 中的 docker)的此条目:Docker DNS not responding from inside a container

我希望这会有所帮助! :-)

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2021-01-12
  • 2021-07-13
  • 1970-01-01
  • 2018-01-21
  • 2016-02-20
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多