我已经在互联网上公开的虚拟机中安装了 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/