Docker端口暴露在外面的世界

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker端口暴露在外面的世界相关的知识,希望对你有一定的参考价值。

我已将docker安装在虚拟机中,该虚拟机可在互联网上公开。我已经在VM中的docker容器中安装了mongodb.Mongodb正在监听27017端口。我使用以下步骤安装

 docker run -p 27017:27017 --name da-mongo -v ~/mongo-data:/data/db -d mongo 

使用-p标志将容器中的端口重定向到主机。但港口27017暴露在互联网上。我不希望它发生。

有什么办法可以解决吗?

答案

好吧,如果你想要它可用于某些主机,那么你需要一个防火墙。但是,如果您只需要在localhost(您的VM机器)上工作,那么您就不需要向主机公开/绑定端口。我建议你在没有-p选项的情况下运行容器,然后运行以下命令:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_container_id_or_name

之后,它将显示一个IP,它是您刚刚运行的容器的IP(是的,docker使用了一些内部虚拟网络连接容器和它们之间的主机)。

之后,您可以使用IP和端口组合连接到它,例如:

172.17.0.2:27017
另一答案

发布端口时,可以选择要发布的主机接口:

docker run -p 127.0.0.1:27017:27017 --name da-mongo 
  -v ~/mongo-data:/data/db -d mongo 

这将容器端口27017发布到主机接口127.0.0.1端口27017.您只能将接口添加到主机端口,容器本身仍必须绑定到0.0.0.0。

以上是关于Docker端口暴露在外面的世界的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云防火墙暴露端口 Docker

如果端口被隐藏,Docker 的 CORS 问题

为docker容器暴露端口

Docker 和 netstat:netstat 不显示端口,由 docker 容器暴露

如何在没有端口映射的情况下将 docker 容器的 ip 和端口暴露给外部 docker 主机?

似乎无法将 docker 容器端口暴露给主机