Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Screen Commands for Docker for Mac (prevent garbled text on reconnect)
# connect to tty on Docker for Mac VM
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
# disconnect that session but leave it open in background
Ctrl-a d
# list that session that's still running in background
screen -ls
# reconnect to that session (don't open a new one, that won't work and 2nd tty will give you garbled screen)
screen -r
# kill this session (window) and exit
Ctrl-a k
# other option to connect w/o screen
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
# Phil Estes says this does:
# it’s running a container (using the debian image..nothing special about it other than it apparently has `nsenter` installed)
# , with pid=host (so you are in the process space of the mini VM running Docker4Mac), and then nsenter says “whatever is pid 1,
# use that as context, and enter all the namespaces of that, and run a shell there"
# from Justin Cormack
# Personally I mostly use screen, but then I also use
docker run --privileged --pid=host justincormack/nsenter1
# too. That's my minimal nsenter image

ssx commented Mar 12, 2017

Just a quick note, if you've created the machine with docker-machine, you can ssh in using docker-machine ssh (that name can be found by docker-machine ls)

Zaijo commented Jul 13, 2017

Hello, thanks for sharing. What version of Docker are you useing here? I have

Version 17.06.0-ce-mac18 (18433)
Channel: stable
d9b66511e0

And I get some strange results when running screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty it just opens my ordinary screen empty windows.

@Zaijo because you're connecting to a tty, not logging in, you won't see a prompt initially. Try typing a command and hitting enter -- you'll see the output and then a new prompt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment