【发布时间】:2017-11-28 10:21:20
【问题描述】:
我的 docker 版本是 1.13.1。 我正在尝试从我的 docker 容器连接到 redis-server,但出现连接被拒绝错误。详细日志如下:
引起:redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException:连接被拒绝 在 redis.clients.jedis.Connection.connect(Connection.java:207) [jedis-2.9.0.jar:] 在 redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93) [jedis-2.9.0.jar:] 在 redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767) [jedis-2.9.0.jar:] 在 redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106) [jedis-2.9.0.jar:] 在 org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888) [commons-pool2-2.4.3.jar:2.4.3] 在 org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432) [commons-pool2-2.4.3.jar:2.4.3] 在 org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361) [commons-pool2-2.4.3.jar:2.4.3] 在 redis.clients.util.Pool.getResource(Pool.java:49) [jedis-2.9.0.jar:] ... 27 更多原因:java.net.ConnectException:连接被拒绝 在 java.net.PlainSocketImpl.socketConnect(Native Method) [rt.jar:1.7.0_80] 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) [rt.jar:1.7.0_80] 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) [rt.jar:1.7.0_80] 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) [rt.jar:1.7.0_80] 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) [rt.jar:1.7.0_80] 在 java.net.Socket.connect(Socket.java:579) [rt.jar:1.7.0_80] 在 redis.clients.jedis.Connection.connect(Connection.java:184) [jedis-2.9.0.jar:] ... 34 更多
当我给 --net="host" 选项时,这个错误消失了,但是当我给
--add-host=parent-host:`ip route show | grep docker0 | awk '{print \$9}'`
我收到错误,虽然容器能够连接到不同 VM 上的 Db,但无法连接到自托管机器上的 redis-server。
【问题讨论】:
-
几个问题:redis 是否在 docker 中运行?您使用的是什么操作系统?
-
操作系统是rhel 7.Redis安装在docker之外的同一台主机上。Redis和Docker安装在同一台机器上。