redis docker,无法连接到redis cli

3df52oht  于 2021-06-09  发布在  Redis
关注(0)|答案(3)|浏览(819)

我正在尝试用持久性存储运行redis。我关注了redis fo安装的官方docker页面。
我用-

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:来自守护程序的错误响应:找不到网络。
我按照文件的要点,为什么这是不工作?

kmpatx3s

kmpatx3s1#

首先创建网络

docker network create some-network

然后在所有必须使用网络的容器中使用它。

docker run --network some-network

完成后,请删除网络。

docker network rm some-network
yduiuuwa

yduiuuwa2#

这两个答案都提供了有趣的信息,但缺乏主要内容。
在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...

这并不是一种使两个容器相互通信的网络/可重用/可移植的方法。那更适合做实验。
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 .

aurhwmvo

aurhwmvo3#

首先,您可以将此命令作为redis服务器运行

docker run --name some-redis -d redis redis-server --appendonly yes

接下来,要运行redis cli来连接redis server,应该是attach redis server container并运行redis cli

docker exec -it some-redis redis-cli -h

当然,如果希望像redis页面一样通过网络访问,则需要将cli容器的网络连接到redis服务器容器以共享网络

docker run --rm -it --net=container:some-redis  redis redis-cli -h

相关问题