gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:12:49 27 4
gpt4 key购买 nike

所以,我正在做一个项目,其中有两个 Docker 容器,一个用于主应用程序,一个用于 Redis(顺便说一句,使用 docker compose)。当然,我想连接两者并尝试默认绑定(bind)设置,但由于它们在两个不同的容器中,应用程序当然无法连接到数据库。然后我在阅读 this 后就选择了 0.0.0.0 .但是,我仍然想问问是否有办法将 Redis 绑定(bind)到我的本地网络,以便只有在其中运行的机器才能连接。

This这不是我真正想要的。也许合并类似 this 的内容?

对于如何使 Redis 仅接受来自其他容器(由 Docker Compose 链接)的连接或将 Redis 绑定(bind)到 0.0.0.0 并使用强大的安全措施是唯一的方法,有没有人有好的解决方案?

提前致谢!

最佳答案

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

  1. 将服务器设置为绑定(bind)或监听 0.0.0.0 或::0(所有地址);
  2. 创建一个非默认的 Docker 网络(Docker Compose 会自动执行此操作);
  3. 在该 Docker 网络上启动服务器容器和任何关联的客户端容器(默认情况下,Docker Compose 会执行此操作);和
  4. 不要设置docker run -p 或 Docker Compose ports: 选项

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

如果您的主机有多个网络接口(interface),并且绑定(bind)到其中一个将使服务成为“私有(private)”服务,那么您可以使用 docker run -p 来做同样的事情。如果您的主机有公共(public) IP 地址 10.20.30.40/16 和私有(private) IP 地址 192.168.144.128/24,那么 docker run -p 192.168.144.128:6379:6379 将使其可用于私有(private)网络(和上面的其他 Docker 容器)但不是公共(public)网络。 (服务器本身,在容器内,仍然需要绑定(bind)到 0.0.0.0。)

如果您需要服务器在主机外可见,但仅对某些 IP 地址可见,我认为您正在使用 Docker 不原生的 iptables 魔法。

关于docker - 将 Redis 容器与另一个容器连接 (Docker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52781783/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com