当两个容器需要通过DNS连接时,如何运行Kudu,它需要两个容器 - 一个用于主服务器,另一个用于docker下的服务器。
可以使用以下命令在Docker下运行Kudu:
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-tserver
到kudu-master
而不是反之。
为了让Kudu正常运行,麻烦kudu-master
和kudu-tserver
需要能够相互连接。
如何配置Docker容器,以便双向链接有效?
答案 0 :(得分:0)
docker run中的link参数是一项遗留功能,可以将其删除(引用[1]和[2])。
您可以使用docker-compose
引发多个Docker容器并将它们相互连接。
要使其正常工作,请创建一个名为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-master
和kudu-tserver
)以及一个网络,其中两个服务都具有对网络其余部分(彼此)可见的别名。 [File reference]
然后使用以下命令行运行docker-compose
:
docker-compose -f "filePathToYourDockerComposeYmlFile" up -d
或者,如果要重新创建Docker容器:
docker-compose -f "filePathToYourDockerComposeYmlFile" up -d --force-recreate
其他有用的命令[reference]:
停止容器:
docker-compose -f "filePathToYourDockerComposeYmlFile" stop
删除容器:
docker-compose -f "filePathToYourDockerComposeYmlFile" rm -f