对于我的生活,我似乎无法弄清楚为什么 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
如果我在此处按 ,则应显示touch
命令,然后显示ls
。
如果我按 Ctrl - p 但是,第一次没有任何事情发生。当我再次按它时,ls
显得神奇。
有人可以帮我理解这些。没有 Ctrl - p 和 Ctrl - n ,我无法生存。
答案 0 :(得分:21)
它似乎已在文档中删除(或移动),但它过去住在这里:https://docs.docker.com/engine/reference/commandline/attach/
修改:看起来他们在Configuration Files文档中引用了以下内容。
从docker容器中分离的命令序列是 ctrl - p ctrl - q ,这是为什么 ctrl - p 没有按预期工作。当你点击 ctrl - p 时,docker正在等待 ctrl - q ,所以没有任何反应。
您可以使用新--detach-keys
参数docker run
来覆盖此序列,使其不是 ctrl - 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,因为我无法在文档中找到它。