当前位置: 首页 > 面试题库 >

docker-compose如何将我的服务名称映射到IP地址?

师建德
2023-03-14
问题内容

我有一个用于运行Web应用程序的docker-compose.yml文件。

version: '3'
services:
  web:
    entrypoint: gunicorn myapp.wsgi:application --bind 0.0.0.0:7000
    ...
  nginx:
    ports:
      # HOST:CONTAINER
      - 80:80
      - 443:443
    ...

在我的nginx服务的容器内:

$ cat /etc/hosts

127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.144.4   790c0822b887

$ curl http://web:7000

<h1>Bad Request (400)</h1>

$ traceroute web

traceroute to web (192.168.144.3), 30 hops max, 46 byte packets
 1  ec2-user_web_1.ec2-user_default (192.168.144.3)  0.008 ms  0.007 ms  0.006 ms

因此,我可以查找Web主机名并将其映射到IP地址192.168.144.3,但在/etc/hosts文件中看不到它。

如何docker-compose专门设置这个curl知道IP地址的容器?


问题答案:

Docker提供了DNS服务(搜索“容器之间的自动DNS解析”),而Docker
Compose提供了使用它的默认“用户定义”网络
。如果您查看/etc/resolv.conf容器内部,它应该指向一个Docker专用IP地址,该地址为通用Internet和其他容器提供主机名解析。

更具体地说,在Docker Compose上下文中,该services:块中每个条目的名称可由从同一docker- compose.yml文件启动的其他容器解析为主机名。你并不需要设置container_name:hostname:links:,或networks:;
这都是为您自动配置的。



 类似资料:
  • contiki os如何将IP地址映射到MAC地址,该地址存储在哪里? 我知道ICMPv6和RPL的基础知识,但是一旦网络建成,在发送IPv6数据包时,如何知道下一跳的MAC地址?我假设不是每次都发送邻居请求消息。此外,在Cooja上,我看到的唯一ICMPv6消息是RPL消息。 我试图通过grep、谷歌搜索和文档找到答案,但我找不到。

  • 问题内容: 在使用以下方式部署此撰写文件的堆栈时: 生成的服务名称将为 myapp_service-name 我希望它由 my-custom-service-name 命名和引用 __ 问题答案: 对于服务之间的通信,如果两个服务都在同一网络中,则可以使用在撰写文件中定义的serviceName(在您的情况下,您的服务名称为service-name)。 完成后,堆栈名称将显示在每个服务之前。这样做

  • 这是我第一次运行库伯内特斯教程。我在无头Ubuntu服务器(18.04)上安装了Docker,库贝特和迷你库贝。我这样跑了小库贝—— 我有一个本地docker映像,它在端口9110上运行restful服务。我创建一个部署,并像这样公开它- 我的服务状态 - 如您所见,该服务在内部IP 172.17.0.5上可用。 有没有办法让我把这个服务映射到/暴露在父主机的IP上,这是192.168.1.216

  • nameNotFoundException:无法解析“localds”。已解决“”;剩余名称“localds” 有谁能帮忙吗。我遵循了这个stackOverflow问题Tomcat vs Weblogic JNDI查找中的说明,但没有任何成功。

  • 需求是当本地程序请求一个IP地址的时候,映射到另一个ip地址上去。 和DNS不同的是,这里没有解析域名,因此修改hosts不行。 有没有办法或者工具可以做到?

  • 我是的新手,虽然我阅读了基本文档,并尝试部署一个简单的Spring BootAPI,但我可能缺少很多东西 我已经将API部署为.jar文件,然后安装并使用以下命令推送它: 然后使用docker命令启动API: 当我访问localhost:7777/hello时,我得到了所需的响应 这是我的 根据这个应答的命令,发布这个命令以获取 因此,我使用运行它,得到了这个错误 如果我设法获得,我是否能够访问它