内部DNS服务
在 Rancher 中,我们拥有自己的内部 DNS 服务,允许同一个环境中的任何服务都可以解析环境中的任何其他服务.
应用中的所有服务都可以通过<服务名称>
解析,并且不需要在服务之间设置服务链接。 创建服务时,您可以定义服务链接
以将服务链接在一起。 对于任何不同应用的服务,您可以通过<服务名称>.<应用名称>
而不是<服务名称>
来解析。 如果您想以不同的名称解析服务,您可以设置服务链接,以便服务可以由服务别名解析.
#
通过链接设置服务别名在 UI 中,添加服务时,展开服务链接部分,选择服务,并提供别名.
如果您使用 Rancher Compose添加服务,docker-compose.yml
将使用links
或external_links
指令.
从容器
和服务连接#
在启动服务时,您可能需要指定只在同一台主机上一起启动服务。 具体的用例包括尝试使用另一个服务中的volume_from
或net
时。 当添加一个从容器时,这些服务可以通过他们的名字自动地相互解析。 我们目前不支持通过从容器中的 links/external_links 来创建服务别名。
当添加一个从容器时,总是有一个主服务和从容器。 它们一起被认为是单个启动配置。 此启动配置将作为一组容器部署到主机上,1 个来自主服务器,另一个从每个从容器中定义。 在启动配置的任何服务中,您可以按其名称解析主服务和从容器。 对于启动配置之外的任何服务,主服务可以通过名称解析,但是从容器只能通过<从容器名称>.<主服务名称>
来解析。
#
容器名称所有容器都可以通过其名称来全局解析,因为每个服务的容器名称在每个环境中都是唯一的。 没有必要附加服务名称或应用名称。
#
例子#
ping 同一应用中的服务如果您执行一个容器的命令行,您可以通过服务名称 ping 同一应用中的其他服务.
在我们的例子中,有一个名为stackA
的应用,有两个服务,foo
和bar
.
在执行foo
服务中的一个容器之后,您可以 ping 通bar
服务.
#
ping 不同应用中的服务对于不同应用的服务,您可以使用<服务名称>.<应用名称>
在不同的应用中 ping 服务.
在这个例子中,我们有一个名为stackA
的应用,它包含一个名为foo
的服务,我们有另一个名为stackB
的应用,它包含一个名为bar
的服务.
如果我们执行foo
服务中的一个容器,您可以用bar.stackb
来 ping.
#
ping 服务中的从容器取决于您从哪个服务 ping,您可以通过<从容器名称>
或<从容器名称>.<主服务名称>
来访问从容器服务。
在我们的例子中,我们有一个名为stackA
的应用,它包含一个名为foo
的服务,它有一个从容器bar
和一个名为hello
的服务。 我们也有一个应用叫stackB
,它包含一个服务world
。
如果我们执行foo
服务中的一个容器,您可以直接用`bar'命令 ping 它。
如果我们执行在同一个应用中的hello
服务的一个容器,您可以通过foo
来 pingfoo
服务和bar.foo
来 pingbar
服务.
如果我们执行world
服务中的一个容器,它是不同的应用,您可以通过foo.stacka
来 pingfoo
服务和bar.foo.stacka
来 ping 从容器bar
.
#
Ping 容器名称从同一个环境下的任何一个容器中,无论它们是否在相同的应用或服务中,您都可以用容器名称来 ping 其他容器,
在我们的示例中,我们有一个名为stackA
的应用,它包含一个名为foo
的服务。 我们还有另一个应用叫stackB
,它包含一个名为“bar”的服务。 容器的名称是<stack_name>-<service_name>-<number>
。
如果我们执行foo
服务中的一个容器,您可以通过 ping 来访问bar
服务中的相关容器.