仅将 docker 端口暴露给内部网络

use*_*449 6 docker docker-compose

现在在一个新的家庭实验室服务器上运行大量的 docker,并试图确保一切都被锁定和安全。我将服务器用于各种用途,既需要从外部世界 (nextcloud) 访问,也需要从我的内部网络 (plex) 访问。当然,服务器位于限制开放端口但寻求额外安全性的路由器后面 - 我想将那些我只想通过内部网络访问的 docker 限制为 192.168.0.0/24。这样,如果某个端口在我的路由器上以某种方式打开,它就不会被暴露(我是偏执狂吗?)。

目前 docker-compose 文件通过以下方式公开端口:

....

 ports:
   - 8989:8989
....
Run Code Online (Sandbox Code Playgroud)

这当然工作正常,但如果我打开路由器上的端口,则全世界都可以访问。我知道我可以通过绑定到本地主机

....
 ports:
   - 127.0.0.1:8989:8989
....
Run Code Online (Sandbox Code Playgroud)

但是当我试图从我的内部网络访问 docker 时,这对我没有帮助。我已经阅读了大量关于 docker 网络和各种标志的文章,还阅读了有关 iptables 解决方案的可能性。

非常感谢任何指导。

谢谢,

Nil*_*oct 4

只需不在 docker-compose 中声明任何端口,它们就会在容器之间自动可见。

我以这种方式使用 elasticsearch 容器,并且单独的 kibana 可以通过 yml 上声明的服务器名称连接到它。


如果我的路由器上的某个端口以某种方式打开,它就不会被暴露

使用此过程,端口在 docker 环境之外永远不可见(即在本地网络中的外部 ==)。

如果您担心在执行我告诉您的过程时端口在您的 LAN 中公开,则事实并非如此。

  • 谢谢-容器之间的通信不是问题。当我在笔记本电脑上时,我需要访问在我的服务器上运行的 Web 应用程序,因此某些端口需要暴露给主机。 (2认同)