【问题标题】:How to connect to a docker container using a domain name如何使用域名连接到 docker 容器
【发布时间】:2020-07-28 06:57:01
【问题描述】:

所以我有一些 docker web 应用程序,当它使用docker-compose 加载时,dhcp 服务选择了一些 IP 地址,比如说192.168.96.3,webapp 位于端口6000,所以连接到我使用@987654325 的 webapp @。有什么办法,在docker-compose.yml 中分配域名foo.local,这样当我连接到webapp 时我输入foo.local:6000

在我的docker-compose.yml中,我可以添加一个我的主机可以映射到容器的动态ip的域名吗?

注意: 容器使用自己的网络,因此将其附加到主机网络将与其用途相冲突。

【问题讨论】:

  • 你在什么操作系统上运行 docker?
  • 如何将域名分配给在您的主机上本地运行的其他进程? How to assign domain names to containers in Docker? 讨论如何使用已发布的端口和反向代理进行设置; Compose 不会自行进行这种 Docker 外网络设置。
  • 我正在运行arch linux os

标签: docker docker-compose


【解决方案1】:

转运集装箱港口

对我来说,您可以通过暴露容器的端口轻松地从主机访问。因此,您应该能够从该主机通过公开端口以 localhost:6000 的身份访问它。从您网络中可以访问主机的其他计算机,使用主机的 IP 或其名称/DNS 名称。

例如在 docker-compose.yml 中

services:
    myservice:
        image: myImage
        ports:
            - "published_port:container_port"

因此,如果您输入“6000:6000”,则意味着主机上的 6000 端口将转发到端口 6000 上的服务。

DNS

所以我想说,对于整体访问,确保您公司的 DNS 将 foo.local 与您的 docker 主机匹配,并将 docker 中容器的端口暴露给 docker 主机。

如果您希望只能从给定的机器 yoythe 主机上执行此操作,您可以在 /etc/hosts 中添加一个条目(假设是 linux)

127.0.0.1       localhost
127.0.0.1       foo.local

这里假设我们在同一台机器上,但您可以使用正确的 IP。如果您有不同的操作系统,请查看有关如何为您的操作系统执行此操作的文档。

【讨论】:

  • 容器有自己的网络,所以在这种情况下将它附加到主机上不起作用,谢谢。容器使用 vpn,因此使用主机网络会与其在自己的 vpn 中的能力发生冲突。
  • 但实际上您对主机上的端口转发是正确的,这对我有用。
  • 容器几乎总是使用自己的网络,这是最佳实践,有时甚至是几个。但是,如果您发布端口(与容器所属的各种网络完全无关),那么主机也会发布该端口并将其转发到容器(实际上是在服务的所有实例之间进行负载平衡)。我没有说在 docker 中使用“主机”网络。在 docker 主机上发布端口后,将 DNS 条目关联到该主机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 2021-04-28
  • 2018-04-18
  • 2022-11-19
  • 1970-01-01
  • 2016-11-17
  • 2018-03-01
相关资源
最近更新 更多