Skip to content

Instantly share code, notes, and snippets.

@nurdiansyah
Forked from BretFisher/docker-for-mac.md
Created October 6, 2021 08:57
Show Gist options
  • Save nurdiansyah/565779d4fe65ef60eec6bb0fbdf19ce2 to your computer and use it in GitHub Desktop.
Save nurdiansyah/565779d4fe65ef60eec6bb0fbdf19ce2 to your computer and use it in GitHub Desktop.
Getting a Shell in the Docker Desktop Mac VM

2018 Update: Easiest option is Justin's repo and image

==================== docker run -it --rm --privileged --pid=host justincormack/nsenter1

Option 1: use Screen (not easy like nsenter)

Note this isn't a list of commands to run in order. The first one gets you in the VM (hit return twice

to see a prompt). Then other commands are for managing that connection. Not a great CLI expirence but gets

the job done. Using the ctrl- options prevents 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

Option 2 (easier): Use nsenter in priviledged container

other option to connect w/o screen

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

Phil Estes (Docker Maintainer) 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"

--or--

from Justin Cormack (Docker Maintainer)

Personally I mostly use screen, but then I also use

docker run -it --rm --privileged --pid=host justincormack/nsenter1

too. That's my minimal nsenter image

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