## 2018 Update: Easiest option is Justin's repo and image ==================== docker run -it --rm --privileged --pid=host justincormack/nsenter1 # more info: https://github.com/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. # 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