For the life of me I can't seem to figure out why ctrl-p and ctrl-n don't work like they're supposed to under the Docker images I have been working with.
ctrl-p should work just like the up arrow but I usually have to press it twice to get the last command I ran. And it cycles through the history in what seems to be a random fashion.
Maybe someone can help me make some sense of this.
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
If I press up here, it should show the touch
command, followed by ls
.
If I press Ctrl-p however, nothing comes up the fist time. When I press it again, ls
appears magically.
Can someone help me make sense of these. I can't live without Ctrl-p and Ctrl-n.
It looks like this has been removed (or moved) in the Docs, but it used to live here: https://docs.docker.com/engine/reference/commandline/attach/
Edit: It looks like they reference the below in the Configuration Files documentation.
The command sequence to detach from a docker container is ctrl-p ctrl-q, which is why ctrl-p doesn't work as expected. When you hit ctrl-p, docker is waiting on ctrl-q, so nothing happens.
You can use the new --detach-keys
argument to docker run
to override this sequence to be something other than 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
If you want, you can add this to your ~/.docker/config.json
file to persist this change:
{
...
"detachKeys": "ctrl-@",
...
}
More details on this can be found here: https://github.com/docker/docker/pull/15666 as I can't find it in the docs anymore.