【问题标题】:Can't connect to Redis/Memcache from inside Docker Container无法从 Docker 容器内部连接到 Redis/Memcache
【发布时间】:2016-09-28 15:34:33
【问题描述】:

我有一个 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 或 curl 其他网站,例如 google 或 facebook,完全可以正常工作。

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

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

【问题讨论】:

  • 你解决过这个问题吗?我也有类似的问题。
  • 从未解决它,但如果我不得不猜测,它与 docker 网桥和只能在专用网络中访问的 memcache/redis 服务器有关。它应该刚刚工作。
  • 我同意。我认为这是 Docker for Mac 的问题。网桥不可用。我无法找到解决办法。我最终使用了 Linux VM。

标签: docker redis memcached docker-machine


【解决方案1】:

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

 docker run --net=host your_image and other options

【讨论】:

  • 不幸的是,我也试过这个,但它给出了同样的错误。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果上述可能的解决方案不起作用。也许您应该检查 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
    

    【讨论】:

      猜你喜欢
      • 2020-02-08
      • 1970-01-01
      • 2019-05-11
      • 2021-12-23
      • 2022-01-07
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多