在Docker中运行Redis服务器时出现ConnectionError

时间:2018-06-23 06:32:36

标签: docker redis

我有以下Python脚本example.py

import redis
r = redis.Redis()
r.set('a','b')

和以下Dockerfile

FROM ubuntu:18.04

# Install system-wide dependencies
RUN apt-get -yqq update
RUN apt-get -yqq install python3-dev python3-pip
RUN apt-get -yqq install redis-tools redis-server

RUN pip3 install redis

# Copy application code
ADD . /usr/local/example
WORKDIR /usr/local/example

# Start application
CMD /etc/init.d/redis-server restart \
        && python3 example.py

在构建容器(docker build -t redis-example .)并运行它(docker run -P -it -d redis-example)之后,将打印以下堆栈跟踪:

Stopping redis-server: redis-server.
Starting redis-server: redis-server.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 484, in connect
    sock = self._connect()
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 541, in _connect
    raise err
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 529, in _connect
    sock.connect(socket_address)
OSError: [Errno 99] Cannot assign requested address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/redis/client.py", line 667, in execute_command
    connection.send_command(*args)
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 610, in send_command
    self.send_packed_command(self.pack_command(*args))
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 585, in send_packed_command
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/redis/connection.py", line 489, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 99 connecting to localhost:6379. Cannot assign requested address.

我不确定为什么这个非常简单示例在Docker中失败。我想在Docker容器本地运行Redis服务器的实例。

它不需要在容器外部可以到达,并且对于容器来说应该是唯一的。

如何解决此异常?

0 个答案:

没有答案