Can';t从Docker容器内部连接到Redis/Memcache

Can';t从Docker容器内部连接到Redis/Memcache,docker,redis,memcached,docker-machine,Docker,Redis,Memcached,Docker Machine,我有一个Docker映像,它封装了我们开发环境的所有工具。但是,在某些配置文件中运行应用程序将尝试连接到外部Redis/Memcache服务器 但是,它无法与这些服务器建立连接。在容器内ping时,它会找到主机的正确IP,但表示无法访问主机: ping HOST PING HOST (CORRECT.IP) 56(84) bytes of data. From e856591c01e7 (172.17.0.3) icmp_seq=1 Destination Host Unreachable Fr

我有一个Docker映像,它封装了我们开发环境的所有工具。但是,在某些配置文件中运行应用程序将尝试连接到外部Redis/Memcache服务器

但是,它无法与这些服务器建立连接。在容器内ping时,它会找到主机的正确IP,但表示无法访问主机:

ping HOST
PING HOST (CORRECT.IP) 56(84) bytes of data.
From e856591c01e7 (172.17.0.3) icmp_seq=1 Destination Host Unreachable
From e856591c01e7 (172.17.0.3) icmp_seq=2 Destination Host Unreachable
From e856591c01e7 (172.17.0.3) icmp_seq=3 Destination Host Unreachable
From e856591c01e7 (172.17.0.3) icmp_seq=4 Destination Host Unreachable
From e856591c01e7 (172.17.0.3) icmp_seq=5 Destination Host Unreachable
From e856591c01e7 (172.17.0.3) icmp_seq=6 Destination Host Unreachable
Ping或curling其他网站,如google或facebook,工作完全正常

DockerMachine是默认设置,网络设置也是默认设置。在Mac OSX 10.10.5、Docker 1.12.1、Docker Machine 0.8.1上运行


有什么想法吗?我不知所措

Docker正在使用不同的网络模式。您可以尝试在“主机网络”中运行容器,以便它与运行docker机器的主机共享网络连接:

 docker run --net=host your_image and other options

对于将来遇到此问题的任何人,请尝试使用ipv6和开放端口创建docker网络。我没有让它工作,但我相当肯定这是正确的道路。

如果上述可能的解决方案不起作用。也许您应该检查memcache服务器配置以获取侦听的IP地址

memcache机器是另一个docker容器还是memcache的独立服务器

如果希望连接到主机的memcache服务器,可能需要将memcache配置为允许从本地IP以外的IP地址进行连接

如果您正在使用ubuntu(或类似软件),请使用编辑配置

nano /etc/memcached.conf
并找到以“-l 127.0.0.1”开头的行,通过用逗号分隔添加客户端计算机IP地址

例如,如果要从172.17.0.3和172.18.0.3进行连接,则替换为

-l 127.0.0.1,172.17.0.1,172.18.0.1

不幸的是,我也尝试了这个方法,但也出现了同样的错误。你解决过这个问题吗?我遇到了一个类似的问题。从未解决过,但如果让我猜的话,它与docker网桥和memcache/redis服务器有关,只能在专用网络中访问。我同意你的看法。我认为这是Docker for Mac的问题。网桥不可用。我找不到解决办法。我最终使用了Linux虚拟机。