Redis docker,无法连接到 redis-cli
Redis docker, cannot connect to redis-cli
我正在尝试 运行 具有持久性存储的 redis。我按照redis的官方docker page安装。
我使用 -
拉取了图像
docker pull redis
我使用 -
启动了具有持久性存储的 redis
docker run --name some-redis -d redis redis-server --appendonly yes
我正在尝试使用 redis cli 连接到 redis 实例 -
docker run -it --network some-network --rm redis redis-cli -h some-redis
它给了我以下错误 -
docker: Error response from daemon: network some-network not found.
我正在按照文档进行说明,为什么这不起作用?
首先创建网络
docker network create some-network
然后在所有必须使用网络的容器中使用它。
docker run --network some-network
完成删除网络后。
docker network rm some-network
首先,你这个命令运行作为redis-server
docker run --name some-redis -d redis redis-server --appendonly yes
接下来,你要运行 redis-cli 连接redis-server
应该附加 redis-server 容器和 运行 redis-cli
docker exec -it some-redis redis-cli -h
当然如果你想像redis页面一样通过网络访问,需要将cli的容器的网络附加到redis-server容器中共享网络
docker run --rm -it --net=container:some-redis redis redis-cli -h
两个答案都提供了有趣的信息,但缺少主要内容。
在 docker 中,容器可能会连接到某些网络。
默认情况下,如果您在 运行 容器时未指定任何网络,它将使用默认的桥接网络:在该网络内,任何容器都可以与任何其他容器通信,但只能通过它们的 IP 地址进行通信。
1) 使用默认桥接网络
您不能通过容器名称在该网络的容器之间进行通信。
所以这里 docker run -it --network some-network --rm redis redis-cli -h some-redis
,some-redis
部分不是可解析的主机名。
为了克服这个问题,您必须通过其 IP 地址引用容器。
检查容器可知:
docker container inspect some-redis | grep -i ipaddress
你应该得到类似的东西:"IPAddress": "172.17...."
现在将 ip 地址指定为 -h 参数,应该没问题:
docker run -it --network some-network --rm redis redis-cli -h 172.17...
这确实不是 net/reusable/portable 使两个容器相互通信的方法。那更适合做实验的东西。
2) 使用自定义桥接网络
您可以通过容器名称在该网络的容器之间进行通信。
创建您的网络:
docker network create redis-network
运行 redis 服务器并将其连接到该网络:
docker run --name some-redis -d --network redis-server redis redis-server --appendonly yes
运行 redis 客户端并将其连接到该网络:
docker run -it --rm --network redis-network redis redis-cli -h some-redis
现在客户端可以通过-h some-redis
连接到服务器实例。
我正在尝试 运行 具有持久性存储的 redis。我按照redis的官方docker page安装。
我使用 -
拉取了图像docker pull redis
我使用 -
启动了具有持久性存储的 redisdocker run --name some-redis -d redis redis-server --appendonly yes
我正在尝试使用 redis cli 连接到 redis 实例 -
docker run -it --network some-network --rm redis redis-cli -h some-redis
它给了我以下错误 -
docker: Error response from daemon: network some-network not found.
我正在按照文档进行说明,为什么这不起作用?
首先创建网络
docker network create some-network
然后在所有必须使用网络的容器中使用它。
docker run --network some-network
完成删除网络后。
docker network rm some-network
首先,你这个命令运行作为redis-server
docker run --name some-redis -d redis redis-server --appendonly yes
接下来,你要运行 redis-cli 连接redis-server 应该附加 redis-server 容器和 运行 redis-cli
docker exec -it some-redis redis-cli -h
当然如果你想像redis页面一样通过网络访问,需要将cli的容器的网络附加到redis-server容器中共享网络
docker run --rm -it --net=container:some-redis redis redis-cli -h
两个答案都提供了有趣的信息,但缺少主要内容。
在 docker 中,容器可能会连接到某些网络。
默认情况下,如果您在 运行 容器时未指定任何网络,它将使用默认的桥接网络:在该网络内,任何容器都可以与任何其他容器通信,但只能通过它们的 IP 地址进行通信。
1) 使用默认桥接网络
您不能通过容器名称在该网络的容器之间进行通信。
所以这里 docker run -it --network some-network --rm redis redis-cli -h some-redis
,some-redis
部分不是可解析的主机名。
为了克服这个问题,您必须通过其 IP 地址引用容器。
检查容器可知:
docker container inspect some-redis | grep -i ipaddress
你应该得到类似的东西:"IPAddress": "172.17...."
现在将 ip 地址指定为 -h 参数,应该没问题:
docker run -it --network some-network --rm redis redis-cli -h 172.17...
这确实不是 net/reusable/portable 使两个容器相互通信的方法。那更适合做实验的东西。
2) 使用自定义桥接网络
您可以通过容器名称在该网络的容器之间进行通信。
创建您的网络:
docker network create redis-network
运行 redis 服务器并将其连接到该网络:
docker run --name some-redis -d --network redis-server redis redis-server --appendonly yes
运行 redis 客户端并将其连接到该网络:
docker run -it --rm --network redis-network redis redis-cli -h some-redis
现在客户端可以通过-h some-redis
连接到服务器实例。