了解 docker 端口映射

Understanding docker port mappings

请解释以下输出:

docker ps ExanpleContainter

Ports
--------
10.10.10.10:443->443/tcp, 0.0.0.0:1937->1937/tcp

并且,docker 检查 ExanpleContainer

"Ports": {
  "1937/tcp": [
    {
      "HostIp": "0.0.0.0",
      "HostPort": "1937"
    }
  ],
  "443/tcp": [
    {
      "HostIp": "10.10.10.10",
      "HostPort": "443"
    }
  ]
}

我想了解映射是如何完成的以及哪个端口映射到哪里?

10.10.10.10:443->443/tcp

这意味着 docker 端口 443 上的主机 IP 10.10.10.10 映射到端口 443 上的指定容器。到达该 ip 端口组合的数据包将可以在同一端口 (443) 上的容器中访问

0.0.0.0:1937->1937/tcp

到达端口 1937 上 docker 主机上所有可用 IP 地址 (0.0.0.0) 的数据包可在同一端口 (1937) 上的指定容器上访问

阅读答案中的解释并将其与 docker inspect ExanpleContainter 的输出进行比较。

以上答案是正确的我正在尝试解释另一种帮助我理解端口映射的方式。

docker ps ExanpleContainter

Ports


10.10.10.10:443->443/tcp, 0.0.0.0:1937->1937/tcp

这里您的容器 ExanpleContainer 公开了两个端口。

  1. 10.10.10.10:443->443/tcp
  2. 0.0.0.0:1937->1937/tcp

输出格式如下,

[IP_ADDR]:{PORT_OUTSIDE_CONTAINER} -> {PORT_INSIDE_CONTAINER} / {PROTOCOL} 

现在在创建容器时,如果您没有指定要映射的内部端口,它将映射随机端口,但在您的情况下,(主机和公开的)端口映射相同。