V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
loganovo
V2EX  ›  程序员

OrbStack 的 domain names 原理是什么啊?

  •  
  •   loganovo · 237 天前 · 2046 次点击
    这是一个创建于 237 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在 mac 上刚装的 OrbStack ,有一点想不通,启动 OrbStack 后就运行了这个命令启动容器,

    docker run -d -p 8080:80 docker/getting-started
    

    然后就能通过浏览器访问 http://orb.local/,直接看到下面的页面

    然后直接浏览器访问容器的 domain-name ,也就是上图红框里的地址,就能直接访问容器服务页面,连 8080 端口号都不用加。
    容器之间可以通过容器名互通我是知道的,但是我的宿主机是怎么直接通过"容器名"访问到容器的呢,我看了我本机的 hosts 文件都没有变化啊。
    这是什么原理呀,有没有大佬知道这个容器名和 ip:port 的映射是在哪里看?

    8 条回复    2023-09-04 09:35:16 +08:00
    phpfpm
        1
    phpfpm  
       237 天前 via Android
    我猜做了反代?
    airyland
        2
    airyland  
       237 天前
    Docker 本身就支持 add host, 看起来底层是 Linux namespace, 不需要显式配置在 /etc/hosts 中。
    ysc3839
        3
    ysc3839  
       237 天前 via Android   ❤️ 1
    个人猜测是 mDNS
    loganovo
        4
    loganovo  
    OP
       237 天前 via Android
    @airyland add host 不是修改的是 docker 容器的 hosts 吗,我这个更像是修改了我宿主机的 hosts
    loganovo
        5
    loganovo  
    OP
       237 天前 via Android
    @phpfpm 但无法解释容器名是怎么在物理机上解析成 ip 的,我在物理机 ping 容器名,直接就能得到 docker 网桥下的容器 ip
    loganovo
        6
    loganovo  
    OP
       237 天前 via Android
    @ysc3839 搜了一下,还真的像是 mdns ,我访问的地址就是以 .local 结尾的
    sky96111
        7
    sky96111  
       237 天前
    @loganovo 就是 mDNS ,你删除掉 host 的 nss-mdns 包和 avahi 或关闭 systemd-resolved 的 Multicast DNS 再试试,应该就不能解析了。这几个包提供了 Linux 上的 mDNS
    keling
        8
    keling  
       237 天前
    .local 就是用的 mDNS 。
    只不过我有另外一个问题,为什么宿主机上可以直接通过 127.0.0.1 访问容器里的服务,是不是自动做了端口映射
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3098 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:46 · PVG 21:46 · LAX 06:46 · JFK 09:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.