【问题标题】:Access dockerized redis from windows host从 windows 主机访问 dockerized redis
【发布时间】:2018-04-05 16:23:37
【问题描述】:

对于 Windows 上的节点后端开发,我试图在 docker 容器中设置 redis,因为 redis windows 版本对我来说似乎是错误的。我对 docker 很陌生,我不知道随之而来的所有原则。

到目前为止我做了什么:

  1. 已安装 docker
  2. 运行“docker pull redis”
  3. 运行'docker run --name some-redis -d redis redis-server --appendonly yes'启动redis容器

问题:

我尝试连接到 127.0.0.1:6379(当我在我的系统上本地安装 redis 时,它曾经可以工作),但它超时了。我认为redis容器有它自己的IP地址,我认为它的IP地址是172.17.0.2。但是连接到这个 ip 也不起作用。

PS C:\WINDOWS\system32> docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-redis
172.17.0.2

PS C:\WINDOWS\system32> docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d3b796e9df5c        redis               "docker-entrypoint..."   About an hour ago   Up 8 minutes        6379/tcp            some-redis

为了从本地计算机连接到容器内的 redis,我缺少什么? (我的节点应用程序没有 dockerized)

【问题讨论】:

    标签: docker redis


    【解决方案1】:

    你错过了暴露端口。使用命令运行 redis 容器

    docker run --name some-redis -p6379:6379 -d redis redis-server --appendonly yes

    如果Dockerfile 包含EXPOSE <some_port> 这意味着另一个容器进入同一个docker网络可以连接到这个端口。仅此而已。

    如果你想从主机连接到容器,你需要说一下 docker。

    • 您可以将-P 选项添加到docker run 命令。在这种情况下,码头工人 将所有定义的端口公开给本地计算机上的随机端口。
    • 或 你可以添加选项-p<port_on_host_machine>:<port_inside_docker_container> 然后你暴露某些端口。

    【讨论】:

    • 暴露端口是我使用的redis镜像的一部分,见:store.docker.com/images/redis?tab=description
    • 试试吧)或者你可以查看你手册中的... or via redis-cli部分。
    • 刚刚尝试过,现在我实际上能够连接到 127.0.1 。很奇怪。你能解释一下吗?
    • 关于 EXPOSE 的文档提供了一些详细信息:docs.docker.com/engine/reference/builder/#expose EXPOSE 告诉它听,用户必须实际发布它
    • 感谢@BukharovSergey 非常容易理解的解释,这对我帮助很大:-)。
    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2019-05-04
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多