gpt4 book ai didi

docker - 在docker中,如何关闭dockerfile暴露的端口?

转载 作者:行者123 更新时间:2023-12-02 17:48:26 29 4
gpt4 key购买 nike

我已经通过 dockerfile 制作了一个图像,其中我通过“expose 22”行公开了一个端口。

“sudo docker build -t mysql_server 。”

在那之后,我发现我不需要端口。

我该怎么做才能关闭 22 端口?

编辑:
@Adrian Mouat @seanmcl

图像是一个 mysql。所以数据库中的数据都在我名为“cliff_mysql56”的容器中。如果我重建图像并运行它,我必须将我所有的数据从这个容器移动到新的运行器 :(。这就是我的原因不想重建。

最佳答案

在此之后的 2 年多仍未得到答复,同时您可能已经重建了上千次图像。无论如何,我正在考虑这个问题,实际上您不能提交和运行新图像,因为当您再次运行它时将使用 EXPOSE 指令。但是,您可以避免从头开始重新构建,执行提交并使用新镜像作为新 Dockerfile 的基础。

我不认为这是一个很好的解决方案,但是是的,有时您只需要修复,即使远非“最先进的”(此外,我自己没有尝试过,但我不明白为什么不应该工作)。

基本上,首先您将当前图像提交到一个新图像中:

docker commit mysql_server new_mysql_server

然后使用之前的镜像创建一个最小的新 Dockerfile,例如:
FROM new_mysql_server
EXPOSE 80 (or just remove EXPOSE)

ENTRYPOINT ["/what/ever"]

然后你构建它
docker build -t cmysql_server .

停止/清理镜像和以前的容器是可选的,最终你应该有一个没有额外端口的新镜像。

即使您不再需要这个答案,我希望它对其他人来说是一个有用的建议。

干杯!

关于docker - 在docker中,如何关闭dockerfile暴露的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833508/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com