【问题标题】:Expected exposed port on Redis container isn't reachable, even after binding the port无法访问 Redis 容器上预期的公开端口,即使在绑定端口之后也是如此
【发布时间】:2019-01-09 23:20:16
【问题描述】:

我在运行 Redis 容器时遇到了一个相当糟糕的问题。出于某种原因,即使我尝试绑定端口和你有什么,它也不会暴露它声称要暴露的 Redis 端口(6379)。显然,我通过扫描分配给 Redis 容器 (172.17.0.3) 的 IP 上的开放端口来检查这一点,它没有返回任何开放端口。我该如何解决这个问题?

Docker Redis 页面(供参考我从哪里提取图像):https://hub.docker.com/_/redis/

我尝试过的命令变体:

docker run --name ausbot-ranksync-redis -p 127.0.0.1:6379:6379 -d redis
docker run --name ausbot-ranksync-redis -p 6379:6379 -d redis
docker run --name ausbot-ranksync-redis -d redis
docker run --name ausbot-ranksync-redis --expose=6379 -d redis

https://gyazo.com/991eb379f66eaa434ad44c5d92721b55(我扫描的最后一个容器是 MariaDB 容器)

【问题讨论】:

  • 我的一位同事提出这可能是防火墙问题。我几乎可以肯定,在查看协议之后,防火墙似乎不是这个困境的问题:gyazo.com/428c8105e6f2a00ed983d1c1d1771fea
  • 你一次尝试了所有这些命令吗?
  • @SergioTulentsev 不,我没有。运行每一个,确保 docker 容器已启动,然后我会检查日志。之后,在指定的 IP 上运行 nmap。如果它不起作用,我会停止并删除容器,然后转到下一个命令。
  • 很好。你不会碰巧知道我的问题吗?
  • 不幸的是,没有:/ 尝试了你的几个命令,他们做了他们应该做的。所以,这不是 docker 的问题。

标签: docker redis


【解决方案1】:

我尝试过的命令变体:

docker run --name ausbot-ranksync-redis -p 127.0.0.1:6379:6379 -d redis
docker run --name ausbot-ranksync-redis -p 6379:6379 -d redis

这两个应该可以工作并使端口在您的主机上可用。

显然,我通过扫描分配给 Redis 容器 (172.17.0.3) 的 IP 上的开放端口来检查这一点,它没有返回任何开放端口。我该如何解决这个问题?

您不应该从 docker 外部直接检查容器上的端口。如果您想从主机或外部访问容器,请发布端口(如上所述),然后访问主机 IP 上的端口(或第一个示例中的主机上的 127.0.0.1)。


对于 docker 网络,您需要在所有接口(不是 localhost/loopback)上运行您的应用程序。官方的redis镜像已经这样做了,你可以通过以下方式验证:

docker run --rm --net container:ausbot-ranksync-redis nicolaka/netshoot netstat -lnt

docker run --rm --net container:ausbot-ranksync-redis nicolaka/netshoot ss -lnt

要从 docker 外部访问容器,您需要发布端口(docker-compose.yml 中的docker run -p ...ports)。然后连接到主机 IP 和发布的端口。

要从 docker 内部访问容器,您需要创建一个共享网络,在那里运行您的容器,然后使用 docker 的 DNS 和容器端口进行访问(不需要发布和公开):

docker network create app
docker run --name ausbot-ranksync-redis --net app -d redis
docker run --name redis-cli --rm --net app redis redis-cli -h ausbot-ranksync-redis ping

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2013-12-30
    • 2017-12-20
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多