Docker仅将端口EXPOSE到Host

Rub*_*ben 82 docker

docker是否能够仅将端口暴露给主机而不是外部.

我需要使用mongo数据库运行docker,我希望它只能从主机访问,但我需要链接主机端口27017.

这是可能的,还是唯一可行的方法是更改​​防火墙定义?

Zei*_*ssS 117

当然,只需绑定它localhost,就像这样:

docker run -p 127.0.0.1:27017:27017

另外:您的主机也可以通过其IP通常与每个容器通信.使用docker inspect $ID得到一个JSON转储(旁边其他的东西),包含网络IP.

  • 第二个选项绑定到localhost,是的.第一个使端口公开.如果您不想要静态端口,请使用`127.0.0.1 :: 27017`. (16认同)
  • 这就像[1] docker run -p 27017:27017 -v/var/lib/mongodb/master:/ data mongo:storage_test/usr/bin/start-mongo [2] docker run -p 127.0.0.1: 27017:27017 ......? (4认同)
  • 此解决方案似乎“不”适用于群体模式,请参阅[此github问题](https://github.com/moby/moby/issues/32299) (2认同)
  • 等效的 docker-compose 是简单的`service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }`? (2认同)