Docker 不释放端口

标签 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

滚动到端口,您会看到 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

我如何让它重用旧端口?

最佳答案

portmapper logic changed在 1.1.0 版本中。逻辑现在被写入增加到 65535,直到它重置为 BeginPortRange这是 49153。

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

关于Docker 不释放端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810458/

相关文章:

python-3.x - 使用 debugpy 和 vs 代码在 docker 容器中调试 python 导致超时/连接被拒绝

docker - 来自守护程序 : Dockerfile parse error Unknown flag: mount 的错误响应

docker - 使用身份验证从 Dockerfile 运行 redis docker 容器

linux - 如何在 Windows 上启用 Docker 远程 API

docker - 如何使用 docker-machine 和 PHPStorm 调试我的 docker 容器

linux - Linux 上的 Nancy 使用 100% CPU

security - 非特权执行从头开始

macos - OS X 的 Boot2Docker 无法启动

docker - Docker拉Windows镜像-无法注册层:重新执行错误:退出状态1

macos - 在 macOS 上使用 ssh-agent 和 docker