我有两个docker容器(container_one和container_two),一个链接到另一个container_one>> link>> container_two。
当我使用地址http://container_two/index.php从container_one中运行curl命令时,curl命令按预期成功执行。
但是,我想介绍一个通配符子域,以便我可以将任意数量的子域连接到container_two(例如:site1.container_two,site2.container_two,* .container_two等)。显然,从container_one:http://site1.container_two/index.php调用curl命令不能单独使用链接。
有没有人知道如何通过docker run命令或其他方式实现这一目标?
答案 0 :(得分:4)
基本上,您不能仅使用--link
标志执行此操作,因为--link
会在/etc/hosts
文件中添加一个条目以促进此容器间通信,并/etc/hosts
个文件不支持通配符。
但是,您可以在container_one
上设置DNS服务器,并在该DNS服务器上设置通配符主机(或子域记录)以指向您的container_two
(并转发所有其他请求)到所有其他主机名的实际DNS),然后在--dns=127.0.0.1
的{{1}}命令中指定docker run
。这看起来有点hacky,但是当container_one
遇到container_one
中无法识别的主机名和{{1}上的DNS时,127.0.0.1
将使用/etc/hosts
(localhost)。对于子域(以及转发到外部DNS基础结构的所有其他请求),将指向container_one
。
您可以在the documentation中找到有关此内容的更多信息。祝你好运!