gpt4 book ai didi

docker - 何时执行基于主机 IP 的端口映射,例如 "-p host-ip:port:port"

转载 作者:行者123 更新时间:2023-12-02 20:44:52 26 4
gpt4 key购买 nike

Docker 提供了一种在容器和主机之间映射端口的方法。

根据官方documentation端口映射时也可以提及主机IP。
-p 192.168.1.100:8080:80 - 将容器中的 TCP 端口 80 映射到 Docker 主机上的端口 8080 以连接到主机 IP 192.168.1.100 .

我尝试了这个选项来弄清楚有/没有主机IP有什么区别。

  • 仅使用 -p 80:80
  • $ docker run -itd -p 80:80 nginx:alpine
    $ curl localhost:80
    $ curl 127.0.0.1:80
    $ curl 0.0.0.0:80
    $ curl 192.168.0.13:80
    $ ps -ef | grep docker-proxy
    16723 root 0:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 172.17.0.1 -container-port 80
    $

    所有 curl 命令都返回输出。
  • 使用主机 IP,如 -p 192.168.0.13:80:80
  • $ docker run -itd -p 192.168.0.13:80:80 nginx:alpine
    $ curl localhost:80
    curl: (7) Failed to connect to localhost port 80: Connection refused
    $ curl 127.0.0.1:80
    curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
    $ curl 0.0.0.0:80
    curl: (7) Failed to connect to 0.0.0.0 port 80: Connection refused
    $ curl 192.168.0.13:80 # return output
    $ ps -ef | grep docker-proxy
    4914 root 0:00 /usr/local/bin/docker-proxy -proto tcp -host-ip 192.168.0.13 -host-port 80 -container-ip 172.17.0.2 -container-port 80
    $

    所有 curl命令失败,除了 192.168.0.13:80 .

    除了我在这里提到的那个之外,还有其他区别吗?

    想知道何时使用基于主机 IP 的端口映射。有什么用例吗?

    最佳答案

    一个 docker 主机可能有多个 NIC。在数据中心,这可能过于隔离流量,例如管理、存储和应用程序/公共(public)。在您的笔记本电脑上,这可能适用于无线和有线接口(interface)。还有用于环回 (127.0.0.1) 和 VPN 隧道之类的虚拟 NIC。

    当您在 port publish 命令中未指定 IP 时,默认情况下 docker 将绑定(bind)到主机上的所有接口(interface)。在 IPv4 中,这通常表示为 0.0.0.0,这意味着监听任何接口(interface)(这就是为什么我不连接到这个地址,因为没有连接到任何 IP 之类的东西)。指定 IP 地址后,您可以手动指定要使用的接口(interface)。为什么要指定这个?我能想到的几个原因:

  • 仅监听 127.0.0.1 以防止外部访问
  • 监听 0.0.0.0 以显式绑定(bind)到所有 IPv4 接口(interface)(可以更改 docker 的默认行为,因此这对某些人来说可能是必要的)。
  • 监听一个物理网卡,允许其他网卡被同一端口上的其他服务绑定(bind)。
  • 如果应用程序不适用于 IPv6,则仅监听 IPv4 接口(interface)。

  • 虽然有很多可能的原因,除了为了安全而监听环回之外,这些用例非常罕见,大多数用户让 docker 去监听所有接口(interface)。

    关于docker - 何时执行基于主机 IP 的端口映射,例如 "-p host-ip:port:port",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746927/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com