docker change Ctrl+;去别的地方吗?

docker change Ctrl+;去别的地方吗?,docker,Docker,我正在使用docker run/bin/bash开发我的容器,每次我想在终端或emacs中使用Ctrl+p,我都必须键入两次,因为docker使用它来从容器中分离(Ctrl+pCtrl+q) 如何将Ctrl+p更改为emacs或终端设置中未使用的更方便的内容?您可以通过添加 { "detachKeys": "ctrl-z,z" } 到~/.docker/config.json 如果config.json中还有其他条目,那么只需添加“detachK

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

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

您可以通过添加

{
    "detachKeys": "ctrl-z,z"
}
~/.docker/config.json

如果
config.json
中还有其他条目,那么只需添加“detachKeys”条目作为最后一个条目。例如:

{
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.11 (linux)"
    },
    "detachKeys": "ctrl-z,z"
}
{
    "auths": {
            "amz": {
                "auth": key"
            },
            "amz2": {
                "auth": key2"
            },
            "amz3": {
                "auth": "key3" }
         },
    "detachKeys": "ctrl-e,e"
}

注意:如果您使用
sudo docker…
运行docker,那么配置文件所在的
.docker
目录必须位于root的主目录中(即
/root/.docker/config.json
)。

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

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

{
    "detachKeys": "ctrl-e,e"
}
现在您可以在bash和emacs中再次使用
Ctrl-p
。是啊

以下是对我有效的答案(比其他答案更详细一些)

您可以修改docker配置文件:

~/.docker/config.json
例如:

{
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.11 (linux)"
    },
    "detachKeys": "ctrl-z,z"
}
{
    "auths": {
            "amz": {
                "auth": key"
            },
            "amz2": {
                "auth": key2"
            },
            "amz3": {
                "auth": "key3" }
         },
    "detachKeys": "ctrl-e,e"
}
注意:分离不再是ctrl-p、ctrl-q,而是ctrl-e+e键

因此,这些步骤是:

  • 更改配置文件
  • 从终端分离(使用旧的/默认键绑定)
  • 再次附加(docker exec-it/bin/bash
  • 随后,您指定的新键绑定应该可以工作

    资料来源:

    如果任何人在更改分离键并调用
    Ctrl-p
    后仍无法在容器内工作,只需在终端中打印
    ^p
    ,而不是在历史记录中添加条目,请确保容器中使用的外壳能够实际处理过程信号

    例如,代替
    docker run-it…sh


    使用
    docker run-it…bash

    在不更改全局配置的情况下使用此选项

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

    我更多考虑的是配置文件,因为它不会影响容器的实际行为,但我想它也可以通过命令行工作:)。不管怎样,终于有了它真是太好了。@creack-这不再是正确的答案了。见下面布伦丹的答案(或公关:)。请删除或更新此答案)。这对我很有用-答案有点让人困惑,因为您只需确保将此键值对添加到
    config.json
    中现有的json正文中。我费了好几天的时间才弄明白为什么不能在bash中查看上一个命令行历史记录。真是一个不幸的转义键绑定选择。不适用于
    docker compose
    :这会使
    ctrl+e
    glitchy。我想知道,有没有一种方法可以完全删除这个组合呢?我想知道我需要做什么才能让docker获得新的配置。谢谢你提供的额外细节。