当两个容器需要通过DNS相互连接时,如何运行Kudu,它需要两个容器-一个用于主服务器,一个用于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-tserver
到kudu-master
,而不是相反。为了使Kudu正常运行,
kudu-master
和kudu-tserver
都需要能够相互连接。如何配置Docker容器,以便双向链接起作用?
最佳答案
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-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
关于docker - 在docker和master到tserver双向连接/循环链接问题中运行Kudu-docker composition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672761/