我让Redis在docker容器中运行。
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>
Run Code Online (Sandbox Code Playgroud)
如果我运行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>
Run Code Online (Sandbox Code Playgroud)
我的操作系统是Windows 10。
有什么办法可以解决问题docker exec -it my_redis redis-cli?
更新
当控制台无响应时,我刚好11次单击“向上箭头”键,即可看到Redis cli。这是100%可复制的。那是什么伏都教魔法?
Far*_* AK 24
docker run --name redis -p 6379:6379 -d redis
docker exec -it redis redis-cli
Lor*_*ord 10
首先,容器可以是多命令容器,它创建在创建容器后在容器内运行 CLI 的选项。

如果您想启动 CLI,您需要了解如何进入容器并执行第二个命令。您需要在容器内启动第二个程序。
要将 redis-cli 运行到容器中,您需要使用另一个 docker 命令 -
exec是execute 的缩写,我们使用它在容器内执行附加命令,因此写下 docker exec 然后写下 dash IT。
-it参数允许我们直接在容器中键入输入,然后提供容器 ID 和我们想要在容器内执行的命令。
sudo docker exec -it container_id redis-cli
如果你不使用-it,你会被直接踢回来,因为 redis CLI 已启动,但你无法输入任何文本。
在分离模式下运行redis容器:
docker run -d redis
Run Code Online (Sandbox Code Playgroud)
运行redis-cli它:
docker exec -it e0c061a5700bfa400f8f24b redis-cli
Run Code Online (Sandbox Code Playgroud)
e0c061a5700bfa400f8f24b容器的ID 在哪里。
根据文档:
要以分离模式启动容器,请使用-d = true或仅使用-d选项。按照设计,除非用于运行容器的根进程退出,否则以分离模式启动的容器将退出,除非您还指定了--rm选项。如果将-d与--rm一起使用,则在退出容器或守护程序退出时(以先发生者为准),将删除该容器。
。
--interactive,-i即使未连接也保持STDIN打开
--tty,-t分配伪TTY
| 归档时间: |
|
| 查看次数: |
1857 次 |
| 最近记录: |