【问题标题】:Docker not releasing portsDocker 不释放端口
【发布时间】:2014-07-17 18:00:42
【问题描述】:

(在 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

如何让它重用旧端口?

【问题讨论】:

    标签: docker boot2docker


    【解决方案1】:

    1.1.0 版中的portmapper logic changed。现在编写的逻辑是增加直到 65535,直到它重置为 BeginPortRange,即 49153。

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

    【讨论】:

    • 谢谢 Ben - 有趣.. 我想知道为什么。如果我没有其他容器在运行,我会知道它们的端口,这很不错。对于像 Boot2Docker 这样你必须手动公开端口的东西来说有点痛苦。
    • 至少-p 应该有帮助,因为您可以指定端口映射
    猜你喜欢
    • 2017-03-02
    • 2010-10-19
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多