我正在运行我的应用程序连接的 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/