对外暴露的 Docker 端口

标签 docker networking network-programming dockerfile

我已经在互联网上公开的虚拟机中安装了 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 机器)上工作,那么您不需要将端口与主机公开/绑定(bind)。我建议您在没有 -p 选项的情况下运行容器,然后运行以下命令:

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

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

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

关于对外暴露的 Docker 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49081584/

相关文章:

python - 如何将 gRPC Python 插件与 Docker 和 Google Cloud Builds 一起使用?

c - Win32_NetworkAdapterConfiguration::EnableDHCP 的奇怪行为?

java - 本地无法访问简单服务器,但可以外部访问

c++ - 未收到 UDP 广播流量

python - 计算特定网络接口(interface)上的传入数据包

database - 错误 : Could not find or load main class org. h2.tools.RunScript

docker - Docker 容器如何判断其内存是否有限?

docker - 错误消息 "Program does not contain a static ' Main' 适合入口点的方法”

java - 从单独的方法中引用套接字

C 语言的聊天客户端? (C网络编程)