【问题标题】:Ctrl-p and Ctrl-n behaving unexpectedly under DockerCtrl-p 和 Ctrl-n 在 Docker 下的行为异常
【发布时间】:2017-06-08 18:35:59
【问题描述】:

对于我的生活,我似乎无法弄清楚为什么 ctrl-pctrl-n kbd> 在我一直使用的 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-pCtrl-n

【问题讨论】:

    标签: linux bash docker


    【解决方案1】:

    看起来这已经在文档中被删除(或移动)了,但它曾经住在这里: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-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,因为我在文档中找不到了。

    【讨论】:

    • 我正在为 Mac 运行 Docker,但我根本没有 ~/.docker 目录。我似乎找不到我的 config.json。
    • 好的,似乎 ~/.docker 目录在您使用 docker login 之前不会被创建,所以如果它不存在,创建它是安全的。我现在已经在 Docker 下工作了,但是,它在 Docker-Compose 下不起作用。 compose 是否使用不同的文件?
    • 嗯,docker-compose 不应该有所作为,因为它连接到加载配置的同一个正在运行的 docker 守护进程。我刚刚对此进行了测试,它对我来说在docker-compose 下工作,但我不确定 OSX 的行为是否不同。
    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多