我有运行我的应用程序连接的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”的引用,正确的方法是什么
2条答案
按热度按时间nuypyhwy1#
如果你用手指
docker hosts
到一个internal dns server
或者dns server
你可以在上面创建记录A
为您的hbasehost
在那上面DNS server
. 容器将使用Internal Docker DNS
然后退回到hosts DNS Server Settings
. 但是创造了一个/etc/hosts
把工作做完(魏瑞德)。我的 Docker
resolv.conf
:现在从其中一个容器内验证:
iq3niunx2#
更新:截至docker
1.13
现在您有了一个类似的标志来添加条目/etc/host
.要在创建服务时添加主机,可以使用
--host
标志:要更新服务并在创建后添加其他主机,请使用
--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。然后,您可以使用以下方法扩展服务:
其他任务应该能够使用环境变量连接到hbase。
来源:我是前 Docker swarmkit维护人员