Docker DataStax 连接不工作

Docker With DataStax Connection Not Working

我编写了 docker-compose.yml 文件,该文件从 docker 商店下载图像。我已经在 docker 商店中订阅了该图片,我可以提取该图片。以下是我在撰写文件中使用的服务。

我写的compose文件所遵循的link是datastax/docker-images

我是 运行 docker 来自 Docker Toolbox 因为我正在使用 Window 7.

version: '2'
services:
  seed_node:
    image: "store/datastax/dse-server:5.1.6"
    environment:
      - DS_LICENSE=accept
    # Allow DSE to lock memory with mlock
    cap_add:
    - IPC_LOCK
    ulimits:
      memlock: -1
  node:
    image: "store/datastax/dse-server:5.1.6"
    environment:
      - DS_LICENSE=accept
      - SEEDS=seed_node
    links:
      - seed_node
    # Allow DSE to lock memory with mlock
    cap_add:
    - IPC_LOCK
    ulimits:
        memlock: -1
  studio:
    image: "datastax/dse-studio"
    environment:
      - DS_LICENSE=accept
    ports:
      - 9091:9091

当我进入浏览器 link 寻找 http://192.168.99.100:9091/ 并尝试建立连接时,我收到以下错误:

 TEST FAILED
All host(s) tried for query failed (tried: /192.168.99.100:9042 (com.datastax.driver.core.exceptions.TransportException: [/192.168.99.100:9042] Cannot connect))

Docker 编写 creates a default internal network,您的所有容器都将获得 IP 地址并可以进行通信。您在那里使用的 IP 地址 (192.168.99.100) 是 host 的地址,即 运行 容器的地址,而不是容器可以通信的内部 IP 地址在该默认内部网络上相互连接。您 运行 所在的端口 9091 Studio 在该外部 IP 地址上可用,因为您在 yaml:

studio 服务中公开了它
ports:
- 9091:9091

要让 Studio 连接到您的一个节点,您需要在它们通信的内部网络上使用 IP,而不是在外部 IP 上。 Docker Compose 的妙处在于,您无需尝试找出那些内部 IP,只需使用与 [=15] 中的服务名称相匹配的 hostname =] 文件.

因此,要连接到您命名为 node 的服务(即 DSE 节点),您应该在 Studio 中创建连接时只使用主机名 node(而不是 IP)。