1

当两个容器需要通过 DNS 相互连接时,如何运行 Kudu,它需要两个容器 - 一个用于 master,一个用于 docker 下的 tserver。

Kudu 可以使用以下命令在 Docker 下运行:

docker run --name kudu-master --hostname kudu-master --detach --publish 8051:8051 --publish 7051:7051 kunickiaj/kudu master

和:

docker run --name kudu-tserver --hostname kudu-tserver --detach --publish 8050:8050 --publish 7050:7050 --link kudu-master --env KUDU_MASTER=kudu-master kunickiaj/kudu tserver

然而,上面定义了一个单向链接,从kudu-tserverkudu-master而不是反之。

为了让 Kudu 正常运行,麻烦kudu-master并且kudu-tserver需要能够相互连接。

如何配置 Docker 容器,以便双向链接起作用?

4

1 回答 1

1

docker run 中的 link 参数是一个遗留功能,可能会被删除(参考文献[1][2])。

您可以创建多个 Docker 容器并使用docker-compose.

要使其正常工作,请创建一个名为的文件夹并将kudu以下docker-compose.yml文件放在其下:

version: '3'
services:
  kudu-master:
    image: "kunickiaj/kudu"
    hostname: kudu-master
    ports:
      - "8051:8051"
      - "7051:7051"
    command:
      master
    networks:
      kudu_network:
        aliases:
          - kudu-master
  kudu-tserver:
    image: "kunickiaj/kudu"
    hostname: kudu-tserver
    ports:
      - "8050:8050"
      - "7050:7050"
    environment:
      - KUDU_MASTER=kudu-master
    command:
      tserver
    networks:
      kudu_network:
        aliases:
          - kudu-tserver
networks:
  kudu_network:

该文件包括 2 个服务 (kudu-masterkudu-tserver) 和一个网络,其中两者都具有对网络的其余部分(彼此)可见的别名。[文件参考]

然后docker-compose使用以下命令行运行:

docker-compose -f "filePathToYourDockerComposeYmlFile" up -d

或者,如果您想重新创建 Docker 容器:

docker-compose -f "filePathToYourDockerComposeYmlFile" up -d --force-recreate

其他有用的命令[参考]

要停止容器:

docker-compose -f "filePathToYourDockerComposeYmlFile" stop

要移除容器:

docker-compose -f "filePathToYourDockerComposeYmlFile" rm -f
于 2018-04-05T12:45:26.623 回答