无法从不同的 docker 容器连接到 Redis
Cannot connect to redis from different docker container
目前我有一个个人 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 顺便
最简单的解决方案是 运行 Docker 使用“--network=host”将容器绑定到主机网络。这是一个非常好的测试解决方案,但是它会将端口和服务分别暴露给互联网(如果您没有防火墙),这可能安全也可能不安全。
另一种方法是按以下方式定义网络:
docker network create -d bridge my-net
然后通过 运行 将 docker run
命令与 --network=my-net
连接到同一网络上的 运行 容器。这样您就可以通过名称引用每个容器。例如,在您的情况下,您可以 ping my_app
来自 Redis 容器,反之亦然。
目前我有一个个人 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 顺便
最简单的解决方案是 运行 Docker 使用“--network=host”将容器绑定到主机网络。这是一个非常好的测试解决方案,但是它会将端口和服务分别暴露给互联网(如果您没有防火墙),这可能安全也可能不安全。
另一种方法是按以下方式定义网络:
docker network create -d bridge my-net
然后通过 运行 将 docker run
命令与 --network=my-net
连接到同一网络上的 运行 容器。这样您就可以通过名称引用每个容器。例如,在您的情况下,您可以 ping my_app
来自 Redis 容器,反之亦然。