gpt4 book ai didi

c# - 无法使用 StackExchange.Redis 从主机连接到 docker redis 容器

转载 作者:可可西里 更新时间:2023-11-01 11:14:36 25 4
gpt4 key购买 nike

不确定是连接字符串问题还是我的 docker 镜像问题。运行 docker container ls 我明白了

57cb0c982c76 redis "docker-entrypoint.s…" 0.0.0.0:32773->6379/tcp

端口好像映射到了外面。我试着跑

docker run -d -P redis:alpine

使用这个和其他不同的参数变体,并使用 StackExchange.Redis C# 驱动程序,它会超时。连接字符串如下所示:

localhost:6379,ssl=True,abortConnect=False

(无密码)。我做错了什么?

更新

尝试使用 docker run -d -p 6379:6379/tcp redis(也是 redis:alpine)。仍然无法连接。 docker inspect 显示主机配置:

        "PortBindings": {
"6379/tcp": [
{
"HostIp": "",
"HostPort": "6379"
}
]
}

最佳答案

自从您运行 docker run -P(大写 P)后,Docker 会为容器中的每个公开端口选择一个主机端口。 docker ps 输出中具体是哪个端口:0.0.0.0:32773->6379/tcp 表示 Docker 已经选择端口 32773,绑定(bind)到所有主机接口(interface),转发到TCP 端口 6379。

这意味着您的 Redis 客户端需要在面向公众的端口 32773 上连接到主机的某个 IP 地址。将连接字符串中的 6379 更改为 32773 应该工作。

明确选择自己的端口更为常见; docker run -p 6379:6379(小写 p)将使用主机上的“正常”Redis 端口 6379 转发到容器中的 Redis 端口。一个缺点是,如果其他任何东西已经在使用该端口(主机 Redis 守护进程、其他一些容器),这可能会失败。

关于c# - 无法使用 StackExchange.Redis 从主机连接到 docker redis 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55171688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com