对于我的生活,我似乎无法弄清楚为什么 ctrl-p 和 ctrl-n 在我一直使用的 Docker 镜像下不能像他们应该的那样工作。 ctrl-p 应该像 up 箭头一样工作,但我通常必须按两次才能获得我运行的最后一个命令。它以一种看似随机的方式循环历史。
也许有人可以帮助我理解这一点。
docker run -it buildpack-deps:trusty # run a Linux based image
root@74cbcf321fae:/# ls
bin boot dev etc home lib lib64 ...
root@74cbcf321fae:/# touch hello
如果我在这里按 up,它应该会显示 touch
命令,然后是 ls
。
但是,如果我按 Ctrl-p ,第一次什么都没有出现。当我再次按下它时,ls
神奇地出现了。
谁能帮我理解这些。我不能没有 Ctrl-p 和 Ctrl-n。
最佳答案
看起来这已在文档中被删除(或移动),但它曾经住在这里:https://docs.docker.com/engine/reference/commandline/attach/
编辑:看起来他们在 Configuration Files 中引用了以下内容文档。
从 docker 容器中分离的命令序列是 ctrl-p ctrl-q,即为什么 ctrl-p 不能按预期工作。当你点击 ctrl-p 时,docker 正在等待 ctrl-q,所以什么也没有发生。
您可以使用 docker run
的新 --detach-keys
参数将此序列覆盖为 ctrl-< kbd>p:
docker run -ti --detach-keys="ctrl-@" ubuntu:14.04 bash
$# ls
$# <--- Ctrl-P here will display ls now
$# <--- Ctrl-@ here will detach from the running container
如果需要,您可以将其添加到您的 ~/.docker/config.json
文件中以保留此更改:
{
...
"detachKeys": "ctrl-@",
...
}
更多细节可以在这里找到:https://github.com/docker/docker/pull/15666因为我在文档中找不到了。
关于linux - Ctrl-p 和 Ctrl-n 在 Docker 下的行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820108/