Docker 不释放端口

Roy*_*ove 5 docker boot2docker

(在 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
Run Code Online (Sandbox Code Playgroud)

滚动到端口,您将看到 49170 是最后分配的端口。

如果我停止并 rm 这些容器并运行另一个容器,Docker 会使用最低的可用端口。然而现在这个数字还在不断增加:

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
Run Code Online (Sandbox Code Playgroud)

如何让它重用旧端口?

Ben*_*ley 3

端口映射器逻辑在版本 1.1.0 中发生了变化。现在将逻辑写入增加到 65535,直到重置为BeginPortRange49153。

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