Docker容器只能由另一个容器访问

Docker容器只能由另一个容器访问,docker,docker-compose,Docker,Docker Compose,我有一个elasticsearch容器,它必须可以被我的nodejs应用程序访问,但我不希望我的第一个容器可以被我的nodejs应用程序访问 我已经设置了从nodejs应用程序到elasticsearch容器的链接,但是我没有找到任何选项来禁用任何其他连接 实现它的最佳方法是什么?您可以创建一个专用网络,该网络仅由您的elasticsearch容器和您想要的特定客户端共享。您还可以创建第二个网络,允许您的nodejs应用程序与其他容器通信 避免使用链接。如果您像下面这样定义自己的网络,它们将被视

我有一个elasticsearch容器,它必须可以被我的nodejs应用程序访问,但我不希望我的第一个容器可以被我的nodejs应用程序访问

我已经设置了从nodejs应用程序到elasticsearch容器的链接,但是我没有找到任何选项来禁用任何其他连接


实现它的最佳方法是什么?

您可以创建一个专用网络,该网络仅由您的elasticsearch容器和您想要的特定客户端共享。您还可以创建第二个网络,允许您的nodejs应用程序与其他容器通信

避免使用链接。如果您像下面这样定义自己的网络,它们将被视为遗产

version: "2"

networks:
  backend:
    driver: bridge
  esprivate:
    driver: bridge

services:
  elasticsearch:
    image: elasticsearch:2.3.3
    networks:
      - esprivate:
    expose:
      - "9200"
      - "9300"

  nodejs:
    networks:
      - esprivate
      - backend

  other_service:
    networks:
      - backend

在这个docker-compose.yml示例中,您的nodejs应用程序可以使用url
http://elasticsearch:9200

您可以创建一个仅由您的elasticsearch容器和您想要的特定客户端共享的专用网络。您还可以创建第二个网络,允许您的nodejs应用程序与其他容器通信

避免使用链接。如果您像下面这样定义自己的网络,它们将被视为遗产

version: "2"

networks:
  backend:
    driver: bridge
  esprivate:
    driver: bridge

services:
  elasticsearch:
    image: elasticsearch:2.3.3
    networks:
      - esprivate:
    expose:
      - "9200"
      - "9300"

  nodejs:
    networks:
      - esprivate
      - backend

  other_service:
    networks:
      - backend
在这个docker-compose.yml示例中,您的nodejs应用程序可以使用url
http://elasticsearch:9200