![docker:守护进程的错误响应:驱动程序无法在端点 redis-redisjson 上编程外部连接](https://linux22.com/image/1600118/docker%EF%BC%9A%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E7%9A%84%E9%94%99%E8%AF%AF%E5%93%8D%E5%BA%94%EF%BC%9A%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E6%97%A0%E6%B3%95%E5%9C%A8%E7%AB%AF%E7%82%B9%20redis-redisjson%20%E4%B8%8A%E7%BC%96%E7%A8%8B%E5%A4%96%E9%83%A8%E8%BF%9E%E6%8E%A5.png)
我想知道是否有人可以帮忙。我尝试在 Raspberry PI 上使用 Docker 安装 reJSON,但出现了一些错误。然后,由于我不知道该如何处理这些错误,我尝试了一些方法,但都不起作用。
这是我的日志:
pi@raspberrypi:~ $ docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest 在本地找不到映像“redislabs/rejson:latest” 最新:从 redislabs/rejson 拉取 6ae821421a7d:拉取完成 e3717477b42d:拉取完成 8e70bf6cc2e6:拉取完成 0f84ab76ce60:拉取完成 0903bdecada2:拉取完成 492876061fbd:拉取完成 f8bcaeface09:拉取完成 649610526f33:拉取完成 摘要: sha256:a954a135cb54ee40a7dfb45617f7e27061ca293d939e6f2e9df6b55a259657dd 状态:已为 redislabs/rejson 下载较新的映像:最新的 docker:守护进程的错误响应:驱动程序无法在端点 redis-redisjson 上编程外部连接(25ab4a7026c4003415085fcfc2e59f5ae8216cafb398e899302014a9ebd5c51a):启动用户空间代理时出错:监听 tcp 0.0.0.0:6379:绑定:地址已在使用中。ERRO[0025] 等待容器时出错:上下文已取消
pi@raspberrypi:~ $ sudo /etc/init.d/redis-server stop [ ok ] 停止 redis-server(通过 systemctl):redis-server.service。
pi@raspberrypi:~ $ docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest docker: 守护进程的错误响应:冲突。容器名称“/redis-redisjson”已被容器“446bdd17f4994510bfb489fc6295f01b877ec892e4622973d79c9b1ae9e33ab2”使用。您必须删除(或重命名)该容器才能重新使用该名称。请参阅“docker run --help”。
pi@raspberrypi:~$docker rm 446bdd17f4994510bfb489fc6295f01b877ec892e4622973d79c9b1ae9e33ab2
446bdd17f4994510bfb489fc6295f01b877ec892e4622973d79c9b1ae9e33ab2
pi@raspberrypi:~ $ docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest standard_init_linux.go:211: exec 用户进程导致“exec 格式错误”
pi@raspberrypi:~$docker rm 446bdd17f4994510bfb489fc6295f01b877ec892e4622973d79c9b1ae9e33ab2
错误:没有这样的容器:446bdd17f4994510bfb489fc6295f01b877ec892e4622973d79c9b1ae9e33ab2
pi@raspberrypi:~ $ docker rm /redis-redisjson /redis-redisjson
pi@raspberrypi:~ $ docker run -p 6379:6379 --name redis-redisjson redislabs/rejson:latest standard_init_linux.go:211: exec 用户进程导致“exec 格式错误”
pi@raspberrypi:~ $
redis-server 也在该机器的 127.0.0.1:6379 上运行。我猜这就是为什么我看到有关 0.0.0.0:6379 正在使用的错误。所以我停止了 redis-server,然后开始遇到各种其他问题。
现在是时候向 Linux 专家询问如何继续前进了。
谢谢罗恩
答案1
除了一个问题,我克服了大部分困难。我使用 git 复制了 reJSON,然后编译了模块,并将其包含在 redis.conf 文件中。
现在只剩下一个障碍,可能与我上面的帖子中的日志所说的相同,它无法连接到 IP/端口 0.0.0.0:6379,因为它已经在使用中。
redis.conf 已定义“bind 127.0.0.1”。在添加行“loadmodule /path/to/file/rejson.so”(其中 /path/to/file/ 是正确的路径)时,redis-cli 命令无法连接,注释掉 loadmodule 命令后,我可以使用 redis-cli 正常连接到 127.0.0.1:6379。
答案2
我通过删除 docker 镜像解决了这个问题,剩下的问题是必须将 rejson.so(编译模块)移动到 redis 可以访问的目录,并在 redis.conf 文件中正确反映这一点。模块现在正在运行,redis-cli 显示 JSON... 命令已被识别。
至于docker,我现在明白第一个端口参数6379是docker监听该端口以转发到docker容器内的6379端口。因此争用是docker容器和本地redis服务器都在监听6379。这将教会我盲目复制命令。
罗恩