将 Redis 容器与另一个容器连接 (Docker)

2024-01-06

因此,我正在做一个项目,其中有两个 Docker 容器,一个用于主应用程序,一个用于 Redis(顺便说一句,使用 docker compose)。当然,我想连接两者并尝试默认的绑定设置,但当然应用程序无法连接到数据库,因为它们位于两个不同的容器中。然后我读完后就选择了 0.0.0.0this https://stackoverflow.com/questions/41371402/connecting-to-redis-running-in-docker-container-from-host-machine。但是,我仍然想问是否有一种方法可以将 Redis 绑定到我的本地网络,这样只有在其中运行的机器才能连接。

This https://stackoverflow.com/questions/31073614/connect-to-redis-from-another-container-in-docker这并不是我真正想要的。也许结合类似的东西this https://stackoverflow.com/questions/17157721/how-to-get-a-docker-containers-ip-address-from-the-host?

有谁有一个好的解决方案来让Redis只接受来自其他容器的连接(由Docker Compose链接)或将Redis绑定到0.0.0.0并使用强大的安全措施是唯一的方法?

提前致谢!


让 Docker 托管的服务只能被同一主机上的其他容器访问很容易。如果你:

  1. 将服务器设置为绑定或侦听 0.0.0.0 或 ::0(所有地址);
  2. 创建非默认 Docker 网络(Docker Compose 会自动执行此操作);
  3. 启动该 Docker 网络上的服务器容器和任何关联的客户端容器(Docker Compose 默认情况下会执行此操作);和
  4. Do not set a docker run -p或 Docker 撰写ports: option

那么客户端容器可以使用其容器名称作为主机名来访问服务器容器,但该主机和其他主机上的非 Docker 进程无法访问服务器。

如果您的主机有多个网络接口并且绑定到其中一个网络接口将使服务成为“私有”,那么您可以使用以下命令执行相同的操作docker run -p。如果您的主机有公共IP地址10.20.30.40/16和私有IP地址192.168.144.128/24,那么docker run -p 192.168.144.128:6379:6379将使其可用于专用网络(以及上述其他 Docker 容器),但不可用于公共网络。 (容器内的服务器本身仍然需要绑定到 0.0.0.0。)

如果您需要服务器在主机外可见,但仅对某些 IP 地址可见,我认为您需要这样做iptablesDocker 并非原生的魔法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Redis 容器与另一个容器连接 (Docker) 的相关文章

随机推荐