docker:连接到外部数据库

tvz2xvvm  于 2021-06-10  发布在  Hbase
关注(0)|答案(2)|浏览(709)

我有运行我的应用程序连接的hbase示例,我们计划将应用程序移动到docker容器中,但保持hbase在docker外部运行。在运行docker容器时,我可以使用addhost选项将运行在docker容器中的my app连接到hbase,如下所示

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

但是我们需要的是swarm的自动伸缩功能,因为我们要运行多个服务,如果我想以docker服务而不是单个容器的形式运行我的应用程序,我在“docker服务”中找不到任何对“-add host”的引用,正确的方法是什么

nuypyhwy

nuypyhwy1#

如果你用手指 docker hosts 到一个 internal dns server 或者 dns server 你可以在上面创建记录 A 为您的 hbasehost 在那上面 DNS server . 容器将使用 Internal Docker DNS 然后退回到 hosts DNS Server Settings . 但是创造了一个 /etc/hosts 把工作做完(魏瑞德)。
我的 Docker resolv.conf :

nameserver 10.110.1.25
nameserver 10.110.1.26

现在从其中一个容器内验证:

root@05d05f934c68:/# ping dc1.mydomain.net
PING dc1.mydomain.net (10.110.1.25): 56 data bytes
64 bytes from 172.20.21.5: icmp_seq=0 ttl=121 time=0.929 ms
iq3niunx

iq3niunx2#

更新:截至docker 1.13 现在您有了一个类似的标志来添加条目 /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 仅附加 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

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

docker service scale myapp=20

其他任务应该能够使用环境变量连接到hbase。
来源:我是前 Docker swarmkit维护人员

相关问题