docker不释放端口

(在Mac上,Boot2Docker,docker v 1.1.1)

遇到问题,Docker在分配主机端口时不会释放它使用的端口。 比如,我用相同的图片启动3个容器。 我的docker ps返回以下内容:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9875e2d28c3b 49ffc1050348 /sbin/my_init 19 hours ago Up 1 seconds 0.0.0.0:49169->22/tcp, 0.0.0.0:49170->3306/tcp boring_goldstine f0a40c3bb4a1 49ffc1050348 /sbin/my_init 19 hours ago Up 6 seconds 0.0.0.0:49167->22/tcp, 0.0.0.0:49168->3306/tcp sleepy_wright 0fb913db3528 49ffc1050348 /sbin/my_init 19 hours ago Up About a minute 0.0.0.0:49165->22/tcp, 0.0.0.0:49166->3306/tcp agitated_jones 

滚动到端口你会看到49170是最后分配的端口。

如果我停下来装载这些容器并运行另一个容器,那么Doc​​ker会使用最低的可用端口。 但是现在这个数字还在不断增加:

 docker run -P -d 49ffc1050348 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82fdf0e54846 49ffc1050348 /sbin/my_init 19 hours ago Up 3 seconds 0.0.0.0:49171->22/tcp, 0.0.0.0:49172->3306/tcp high_euclid 

我如何得到它重用旧的端口?

portmapper逻辑在版本1.1.0中更改 。 这个逻辑现在被写入增加到65535,直到它重新设置为49153的BeginPortRange

您可以使用docker run -p <host port>:<container port>将主机端口映射到容器端口。