代码之家  ›  专栏  ›  技术社区  ›  Andrzej Gis

在Docker容器中访问Redis CLI

  •  1
  • Andrzej Gis  · 技术社区  · 6 年前

    我让Redis在一个 docker container

    docker run --rm -d --name "my_redis" redis

    我想通过CLI访问它:

    如果我跑步 docker exec -it my_redis redis-cli 在我离开容器之前,控制台将一直没有响应(Ctrl+P、Ctrl+Q)

    C:\Users\Andrzej>docker exec -it my_redis redis-cli
    // nothing here until I go Ctrl + P, Ctrl + Q
    exec attach failed: error on attach stdin: read escape sequence
    C:\Users\Andrzej>
    

    如果我跑步 docker exec -it my_redis sh 然后运行 redis-cli 从容器内部开始工作。

    C:\Users\Andrzej>docker exec -it my_redis sh
    # redis-cli
    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> get hello
    "world"
    127.0.0.1:6379>
    

    我的操作系统是Windows 10。

    有没有办法修复 docker exec-it my\u redis redis cli 行为

    使现代化

    当控制台没有响应并且我恰好单击了11次“arrow up”键时,我就得到了Redis cli。这是100%可复制的。那是什么巫毒魔法?

    1 回复  |  直到 6 年前
        1
  •  54
  •   Community CDub    4 年前

    以分离模式运行redis容器:

    docker run -d redis
    

    redis-cli 在其上:

    docker exec -it e0c061a5700bfa400f8f24b redis-cli
    

    哪里 e0c061a5700bfa400f8f24b 是容器的id。

    根据文件:

    Detached (-d)

    要在分离模式下启动容器,请使用-d=true或-d选项。根据设计,当用于运行容器的根进程退出时,容器以分离模式启动,除非您还指定了--rm选项。如果将-d与-rm一起使用,则在容器退出或守护进程退出时(以先发生的为准)移除容器。

    --交互式,-即使未连接,我也保持STDIN打开

    --tty,-t分配一个伪tty

        2
  •  10
  •   Faruk AK    3 年前
    1. 在6379端口运行redis容器,名称为redis in detached 模式

    docker run--名称redis-p 6379:6379-d redis

    1. 在容器中运行redis cli命令。

    docker exec-it redis redis cli

        3
  •  4
  •   Rafiq    4 年前

    首先,容器可以是多命令容器,它创建了在创建容器后在容器内运行CLI的选项。 enter image description here

    如果要启动CLI,需要了解如何进入容器并执行第二个命令。您需要在容器内启动第二个程序。

    要在容器中运行redis cli,需要使用另一个docker命令-

    enter image description here

    执行董事 是execute的缩写,我们使用它在容器内执行一个额外的命令,所以写下docker exec,然后写下dash。

    -it部门 参数允许我们直接在容器中键入输入,然后提供容器ID和要在容器中执行的命令。

    sudo docker exec-it container\u id redis cli

    enter image description here

    如果不使用 -it部门 ,您将直接返回,因为redis CLI已启动,但您无法输入任何文本。

        4
  •  0
  •   infiniteshi    3 年前

    除了其他答案之外,还有另一种替代方法:

    docker exec -it <your_redis_container_id> sh
    

    #redis-cli //闪烁后运行redis cli#

    127.0.0.1:6379> your_redis_cli_commands ...

    #exit //需要退出redis cli时运行exit