There is a utility called nsenter in ubuntu. nsenter is a small tool allowing to enter into namespaces. It will enter into your docker container. I want to control the host machine from the docker container. How do I connect the host machine from the container using the nsenter utility?
CodePudding user response:
nsenter
allows you to join the Linux namespaces of a targeted process id (PID).
First, run a container that shares your hosts PID namespace with --pid=host
. The container has to be privileged with --privileged
, otherwise executing nsenter
will fail with an "Operation not permitted" error. The container is kept running indefinitely by executing tail -f /dev/null
.
docker run --pid=host --privileged --name admin-container ubuntu:latest tail -f /dev/null
Then exec into the container with nsenter
, entering the file system, ipc, utc and network namespace of the host machine's very first init process (PID = 1):
docker exec -it admin-container nsenter --target 1 --mount --uts --ipc --net /bin/bash
Have a look around and you will notice, you are on the host machine.