了解docker端口映射

时间:2017-01-23 02:03:41

标签: linux docker docker-machine rhel7

请解释以下输出:

docker ps ExanpleContainter

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

并且,docker检查ExanpleContainter

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

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

2 个答案:

答案 0 :(得分:12)

  

10.10.10.10:443->443/tcp

这意味着端口443上的docker host 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的输出进行比较。

答案 1 :(得分:1)

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

docker ps ExanpleContainter

端口


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} 

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