无法从其他Docker容器连接到Redis

时间:2018-09-03 16:09:31

标签: 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

1 个答案:

答案 0 :(得分:1)

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

另一种方式是通过以下方式定义网络:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

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