docker将Ctrl + p更改为其他内容?

时间:2013-12-29 18:33:49

标签: docker

我正在使用docker run /bin/bash开发我的容器,每次我想在终端或emacs中使用Ctrl+p时,我必须输入两次,因为docker使用它来从容器中分离(Ctrl+p Ctrl+q)。

如何将Ctrl+p更改为在emacs或终端设置中未使用的更方便的其他内容?

5 个答案:

答案 0 :(得分:26)

Docker has a configuration file您可以使用

更改分离绑定
{
    "detachKeys": "ctrl-e,e"
}
~/.docker/config.json中的

注意:如果您使用sudo docker ...运行docker,则.docker目录中的配置文件必须位于根目录的主目录中(即/root/.docker/config.json

答案 1 :(得分:16)

现在有一个解决方案,所以我想在这里更新它以方便其他人。

只需添加~/.docker/config.json并设置自己的键绑定。

{
    "detachKeys": "ctrl-e,e"
}

现在,您可以再次在bash和emacs中使用Ctrl-p。呀!

答案 2 :(得分:4)

这对我有用(比其他答案更详细)

您修改了docker配置文件:

~/.docker/config.json

例如:

{
    "auths": {
            "amz": {
                "auth": key"
            },
            "amz2": {
                "auth": key2"
            },
            "amz3": {
                "auth": "key3" }
         },
    "detachKeys": "ctrl-e,e"
}

注意:分离不再是ctrl-p,ctrl-q,而是ctrl-e + e键。

所以步骤是:

  1. 更改配置文件
  2. 从终端分离(使用旧/默认密钥绑定)
  3. 再次附加(docker exec -it / bin / bash
  4. 随后您指定的新键绑定应该起作用

    来源: https://github.com/mx4492/dotfiles/commit/bad340b8ddeda6078093e89acacfcba8af74a0cc

答案 3 :(得分:1)

如果即使更改了分离键并调用Ctrl-P后,仍然没有人Ctrl-P在容器内工作,则只需在终端中打印出^P而不是输入在历史记录中,请确保您在容器中使用的外壳实际上可以处理过程信号。

例如而不是docker run -it ... sh

使用docker run -it ... bash

答案 4 :(得分:0)

在不更改全局配置的情况下使用此功能

docker exec --detach-keys='ctrl-e,e' -ti foo /bin/bash