我正在使用docker run /bin/bash
开发我的容器,每次我想在终端或emacs中使用Ctrl+p
时,我必须输入两次,因为docker使用它来从容器中分离(Ctrl+p
Ctrl+q
)。
如何将Ctrl+p
更改为在emacs或终端设置中未使用的更方便的其他内容?
答案 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键。
所以步骤是:
随后您指定的新键绑定应该起作用
来源: 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