我正在尝试用持久性存储运行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:来自守护程序的错误响应:找不到网络。
我按照文件的要点,为什么这是不工作?
3条答案
按热度按时间kmpatx3s1#
首先创建网络
然后在所有必须使用网络的容器中使用它。
完成后,请删除网络。
yduiuuwa2#
这两个答案都提供了有趣的信息,但缺乏主要内容。
在docker中,容器可以连接到某些网络。
默认情况下,如果在运行容器时未指定任何网络,它将使用默认网桥网络:在该网络中,任何容器都可以与任何其他容器通信,但只能通过它们的ip地址进行通信。
1) 使用默认网桥网络
不能通过容器名称在该网络的容器之间进行通信。
所以在这里
docker run -it --network some-network --rm redis redis-cli -h some-redis
,的some-redis
部件不是可解析的主机名。为了克服这个问题,您必须通过容器的ip地址来引用它。
检查容器以了解:
你应该得到这样的结果:
"IPAddress": "172.17...."
现在将ip地址指定为-h参数,应该可以:这并不是一种使两个容器相互通信的网络/可重用/可移植的方法。那更适合做实验。
2) 使用自定义网桥网络
您可以通过容器名称在该网络的容器之间进行通信。
创建网络:
运行redis服务器并将其连接到该网络:
运行redis客户端并将其连接到该网络:
现在客户端可以通过
-h some-redis
.aurhwmvo3#
首先,您可以将此命令作为redis服务器运行
接下来,要运行redis cli来连接redis server,应该是attach redis server container并运行redis cli
当然,如果希望像redis页面一样通过网络访问,则需要将cli容器的网络连接到redis服务器容器以共享网络