Docker网络仅适用于--net = host

时间:2019-04-18 17:35:50

标签: docker networking

编辑:我已经设法意识到问题出在桥接网络上,因为--net=host的网络功能似乎还不错。

docker run -it --net=host busybox ping -c 1 8.8.8.8始终如一。

在reddit Docker network problem. Only works with --net=host上查看此线程,通过卸载ebtables解决了OP的问题。我做了同样的事情,但是仍然有同样的问题。

-

我已经通读了很多线程(请参阅下文),试图深入了解我正在通过docker实例安装Discourse的问题,当它尝试从github提取时失败。大多数线程都指向DNS中的问题,但是我意识到这是另一回事,因为我也无法ping静态IP地址。

话语安装失败,并显示以下内容: cd /pups && git pull && /pups/bin/pups --stdin fatal: unable to access 'https://github.com/discourse/pups.git/': Could not resolve host: github.com

最奇怪的是它在重新启动后立即可以工作:

systemctl restart docker

docker run -it busybox ping -c 1 8.8.8.8

  

PING 8.8.8.8(8.8.8.8):56个数据字节64个字节   8.8.8.8:seq = 0 ttl = 58时间= 0.646 ms

     

--- 8.8.8.8 ping统计信息---传输1个数据包,接收1个数据包,0%数据包丢失往返最小/平均/最大= 0.646 / 0.646 / 0.646 ms

docker run -it busybox ping -c 1 8.8.8.8

  

PING 8.8.8.8(8.8.8.8):56个数据字节

     

--- 8.8.8.8 ping统计信息---传输1个数据包,接收0个数据包,100%丢失数据包

无论如何,后续调用都会失败。我很困惑如何去调试它。

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
Docker version 18.09.5, build e8ff056 (released 2019-04-11)

尝试的修复程序:

1 个答案:

答案 0 :(得分:0)

Docker用于本地主机开发测试,因此该测试配置为在本地服务。如果您想与其他主机通信,请尝试使用Docker Swarm,它可能会解决您主机与主机之间的通信方向以及Docker Swarm可以完成的其他工作。

我们可能需要查看更多Dockerfile。您呈现的docker run命令使用“ -it”标志,该标志用于您创建的容器busybox的交互模式。 (使用列出的命令。)

我没有使用--net标志,但是从我上过Docker的课程开始,在运行一个简单的容器之后,您可以构建和创建将网络覆盖技术用于Docker Swarm模式的服务。 https://docs.docker.com/network/overlay/

披露:我在Udemy上的Bret Fisher上了Docker课程。