Docker:连接到外部数据库

标签 docker hbase docker-swarm

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

docker run -dit --add-host hbasehost:xxx.xxx.xxx.xxx mydockerimage

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

最佳答案

Update: As of docker 1.13 you now have a similar flag to add entries to /etc/host.

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

docker service create --name myapp --host "hbasehost:xxx.xxx.xxx.xxx" --replicas 5 myimage

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

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

您还可以使用 --host-rm 删除主机。


原答案

--add-host 仅在 /etc/hosts 中附加 host:IP 关联。

您可以从使用 --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

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

docker service scale myapp=20

其他任务应该可以使用环境变量连接hbase。

来源:我是前 Docker Swarmkit 维护者

关于Docker:连接到外部数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734420/

相关文章:

docker compose 覆盖端口属性而不是合并它

docker - 工作人员无法连接到 AWS EC2 上的 Swarm

docker - 无法从一个 Docker 容器 ping 到另一个

hadoop - 在选择hbase之前应该考虑什么?

hadoop - Phoenix 中的主键如何转换为 hbase 中的行键

hbase - 基于部分行键过滤 HBase 中的行

docker stack rm 后跟 deploy 失败并在连续构建上运行

Docker hub 自动构建版本和标签最新

r - Docker,Jenkins和rJava

linux - docker 网络 - 无法发现任何可绑定(bind)的网络接口(interface)