Docker:连接到外部数据库

sur*_*esh 8 hbase docker docker-swarm

我有运行hbase实例的应用程序连接,我们计划将应用程序移动到docker容器中,但保持hbase在docker之外运行.我可以让我的app在docker container中运行,在运行docker container时使用add-host选项连接到hbase,如下所示

docker run -dit --add-host hbasehost:xxx.xxx.xxx.xxx mydockerimage
Run Code Online (Sandbox Code Playgroud)

然而我们需要的是swarm的自动缩放功能,因为我们有多个服务要运行,如果我想运行我的应用程序作为docker服务而不是单个容器,实现这个的正确方法是什么,我找不到任何引用到"docker service"中的"--add-host"

abr*_*nan 7

更新:从docker开始,1.13您现在有一个类似的标志来添加条目/etc/host.

要在创建服务时添加主机,可以使用以下--host标志:

docker service create --name myapp --host "hbasehost:xxx.xxx.xxx.xxx" --replicas 5 myimage
Run Code Online (Sandbox Code Playgroud)

要更新服务并在创建后添加其他主机,请使用以下--host-add标志:

docker service update --host-add "hbase:x.x.x.x" myapp

您也可以使用删除主机--host-rm.


原始答案

--add-host只附加一个host:IP关联/etc/hosts.

您可以从使用切换--add-host到使用环境变量,--env即使这需要对您的应用进行轻微更改以使用环境变量而不是主机名来连接到hbase.

# Applies environment variables for all tasks in a service.

docker service create --name myapp --replicas=5 --env HBASEHOST=xxx.xxx.xxx.xxx myimage
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下方式扩展服务:

docker service scale myapp=20
Run Code Online (Sandbox Code Playgroud)

其他任务应该能够使用环境变量连接到hbase.

资料来源:我是前Docker Swarmkit维护者