使用localhost转发Docker端口

时间:2018-05-10 15:35:32

标签: docker docker-compose

我在docker容器中的端口11211上运行了memcached服务,我想使用127.0.0.1:11211从另一个容器中访问此服务。我使用docker-compose并没有“链接”,“端口”或“暴露”似乎对我有用。我不想使用memcached docker容器的ip访问,而是我想访问它,因为它是另一个容器的本地服务。有没有解决方案?

谢谢!

version: '2'
services:
  memcached:
    build: ./memcached
    image: memcached_img
    expose:
      - "11211"
  web:
    build: .
    image: app:latest
    mem_limit: 512m
    ports:
      - "3000:3000"
    command: [ "script/startup.sh", "web" ]
  worker:
    build: .
    image: app:latest
    mem_limit: 512m
    command: [ "script/startup.sh", "worker" ]

2 个答案:

答案 0 :(得分:1)

首先,您需要更改Memcache conf以允许与其他主机连接

!important

构建形象。

你的docker-compose文件中的

 go to /etc/memcached.conf:
 change -l 127.0.0.1 to -l 0.0.0.0 # or simply comment it out

答案 1 :(得分:0)

容器内的localhost是一个不同的隔离网络。不是主持人的本地主机。

您可以将depends_on: memcached添加到网络容器中。这会将memcached主机添加到web容器中,您可以从那里ping该主机。 Docker将负责端口转发。它还将确保仅在memcached启动后才启动web。然后,您可以telnet memcached 11211内的web