在dockerized redis cli中的“某些网络”占位符中会发生什么?

时间:2019-06-13 19:43:46

标签: docker redis

我正在查看documentation here,并看到以下行:

$ docker run -it --network some-network --rm redis redis-cli -h some-redis

--network some-network字段中应该包含什么?我的docker run命令在字段docker run -d -p 6379:6379等的默认端口映射之前完成过。

我正在使用默认的docker网络配置启动我的Redis服务器,并且看到它正在使用中:

$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
abcfa8a32de9        redis               "docker-entrypoint.s…"   19 minutes ago       Up 19 minutes       0.0.0.0:6379->6379/tcp   some-redis

但是,使用默认的桥接网络会产生:

$ docker run -it --network bridge --rm redis redis-cli -h some-redis
Could not connect to Redis at some-redis:6379: Name or service not known

3 个答案:

答案 0 :(得分:0)

Docker通过使用网络驱动程序提供了对网络容器的支持。默认情况下,Docker为您提供两个网络驱动程序,即网桥驱动程序和覆盖驱动程序。您还可以编写网络驱动程序插件,以便可以创建自己的驱动程序,但这是一项高级任务。

在此处了解更多信息。 https://docs.docker.com/engine/tutorials/networkingcontainers/

https://docs.docker.com/v17.09/engine/userguide/networking/

答案 1 :(得分:0)

您需要运行

docker network create some-network

some-network的名称无关紧要,只要Redis服务器,您的特殊CLI容器以及与该服务器通信的所有客户端都使用相同的名称即可。 (如果您使用的是Docker Compose,这将自动为您发生,网络将被命名为directoryname_default之类的名称;请使用docker network ls来查找它。)

如果您的Redis服务器已经在运行,则可以使用docker network connect将现有容器附加到新网络。这是创建容器后可以更改的少数设置之一。

如果您只是想运行一个客户端来与该Redis对话,那么您根本不需要Docker。您可以在本地安装Redis客户端工具并运行redis-cli,指向主机的IP地址和docker run -p选项中的第一个端口。 Redis有线协议非常简单,您还可以使用诸如nctelnet之类的原始工具。

答案 2 :(得分:-1)

忽略--network bridge命令并使用:

docker exec -it some-redis redis-cli