Docker 对外开放的端口
Docker port exposed to outside world
我已经在互联网上公开可用的 VM 中安装了 docker。我已经在 docker 容器中安装了 mongodb,VM.Mongodb 正在侦听 27017
端口。
我已使用以下步骤安装
docker run -p 27017:27017 --name da-mongo -v ~/mongo-data:/data/db -d mongo
来自容器的端口使用 -p
标志重定向到主机。但是端口 27017
暴露在互联网上。我不希望它发生。
有什么办法可以解决吗?
好吧,如果您希望某些主机可以使用它,那么您需要一个防火墙。但是,如果您只需要它在本地主机(您的 VM 机器)上工作,那么您不需要 expose/bind 主机的端口。我建议你 运行 不带 -p 选项的容器,然后 运行 以下命令:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_container_id_or_name
之后,它会显示一个 IP,它是您刚刚 运行 的容器的 IP(是的,docker 使用某种内部虚拟网络连接您的容器和主机它们之间的机器)。
之后,您可以使用 IP 和端口组合连接到它,例如:
172.17.0.2:27017
当你发布端口时,你可以select在哪个主机接口上发布:
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。
我已经在互联网上公开可用的 VM 中安装了 docker。我已经在 docker 容器中安装了 mongodb,VM.Mongodb 正在侦听 27017
端口。
我已使用以下步骤安装
docker run -p 27017:27017 --name da-mongo -v ~/mongo-data:/data/db -d mongo
来自容器的端口使用 -p
标志重定向到主机。但是端口 27017
暴露在互联网上。我不希望它发生。
有什么办法可以解决吗?
好吧,如果您希望某些主机可以使用它,那么您需要一个防火墙。但是,如果您只需要它在本地主机(您的 VM 机器)上工作,那么您不需要 expose/bind 主机的端口。我建议你 运行 不带 -p 选项的容器,然后 运行 以下命令:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' your_container_id_or_name
之后,它会显示一个 IP,它是您刚刚 运行 的容器的 IP(是的,docker 使用某种内部虚拟网络连接您的容器和主机它们之间的机器)。
之后,您可以使用 IP 和端口组合连接到它,例如:
172.17.0.2:27017
当你发布端口时,你可以select在哪个主机接口上发布:
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。