无法从Docker容器内部连接到Redis/Memcache

问题描述:

我有一个Docker Image,它封装了我们开发环境的所有工具。但是,在某些配置文件中运行应用程序将尝试连接到外部Redis/Memcache服务器。无法从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 

爆震或卷曲的其他网站,如谷歌或Facebook,上班完全没问题。

与网络设置一样,DockerMachine是默认设置。在Mac OSX 10.10.5上运行,Docker 1.12.1,Docker-Machine 0.8.1

任何想法?我很茫然。

Docker使用不同的网络模式。你可以尝试运行在“主机网络”的容器,所以它会共享主机的网络连接运行的泊坞窗机:

docker run --net=host your_image and other options 
+0

不幸的是,我也试过这个,它给出了同样的错误。 – mooooooose

什么是docker ps输出和你是怎么运行的容器?

+0

'/ usr/local/bin/docker run --rm -it -h MYHOSTNAME -p 9000:9000 -p 6379:6379 -p 8000:8000 -p 5005:5005 -p 11213:11213 -P --name web -v $ projectPath:/ myProject/myImage' – mooooooose

+0

'97bbca4ed35c myImage“/ bin/sh -c'bash -C”6秒前上5秒0.0.0.0:5005->5005/tcp,0.0.0.0:6379-> 6379/tcp,0.0.0.0:8000->8000/tcp,0.0.0.0:9000->9000/tcp,0.0.0.0:11213->11213/tcp web' – mooooooose

+0

你有没有检查是否有一些网络问题?另请参阅:http://superuser.com/a/1113471/601557 – RichArt

对于将来出现此问题的任何人,请尝试使用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