docker - 无法从不同的docker容器连接到redis

标签 docker redis dockerhub

目前,我有一个个人 docker 镜像上传到 DockerHub,我正在进行更改以将此应用程序连接到 redis(也在另一个 docker 容器中运行)

现在,当我的应用程序尝试连接到 redis 时,我收到了下一条消息:

 Error saving to redis: dial tcp 127.0.0.1:6379: connect: connection refused

我知道它们不在同一个网络中,所以我的应用程序指向 127.0.0.1:6379 ,它没有执行任何操作,所以,我正在寻找以某种方式连接这些容器的最佳方法不要让我的应用程序依赖于托管 redis 的 IP,我可以从我的本地计算机使用 redis,但不能从另一个 docker 容器使用。简而言之,我所做的是:

docker run --name redis_server -p 6379:6379 -d redis
sudo docker run -d --restart=always -p 10000:10000 --link redis_server:redis --name my_app repo/my_app

因此,我正在寻找有关如何使 my_app 可以访问 127.0.0.1:6379 的解决方案。顺便说一句,我不使用 docker-compose

最佳答案

最简单的解决方案是使用“--network=host”运行 Docker,它将容器绑定(bind)到主机网络。这是一个完美的测试解决方案,但是它会将端口和服务分别暴露到互联网(如果您没有防火墙),这可能安全也可能不安全。

执行此操作的另一种方法是按以下方式定义网络:

docker network create -d bridge my-net

然后通过使用 --network=my-net 运行 docker run 命令在同一网络上运行容器。这样您就可以通过名称引用每个容器。例如,在您的情况下,您可以从 Redis 容器ping my_app,反之亦然。

关于docker - 无法从不同的docker容器连接到redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153235/

相关文章:

ubuntu - 配置 Celery 以通过 Unix 套接字与 Redis 通信

redis 使用 KEYS 的数字范围

docker - 当我尝试拉取公共(public)镜像时,为什么会收到来自 Docker 的授权错误?

image - Kubernetes 如何从外部存储库拉取镜像?图像存储在哪里?

azure - 更新 EKS kubernetes 集群代理池配置文件

docker - Kubernetes 从多个私有(private) Docker 注册表中提取

docker - 无法将 github 公共(public)存储库克隆到 Dockerfile 的运行顺序中

java - 使用 ubuntu 镜像在 dockerfile 中安装 JDK 8 update 172

redis - Redis中的多参数匹配+加权随机pick

docker - 维护标记的最新docker镜像版本的最有效方法是什么