Docker - use tools on host in container
My docker container doesn’t have a tool (e.g., telnet) installed. How do I run that tool without installing it in the container?
That tool (say, telnet) is already available on the host. nsenter allows us to run tools (like telnet) that are on the docker host (but not in docker container) within the container 🤯
In the past, I’d go into the container, install the tool (telnet), use it, the forget about it.
Now, I use nsenter to run telnet in a container that doesn’t have telnet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# display docker containers
julius@docker-host:$> docker ps
# output
CONTAINER ID IMAGE COMMAND CREATED STATUS
74080122d165 namshi/smtp "/bin/entrypoint.sh …" 24 hours ago Up 2 hours
# declare variables
julius@docker-host:$> docker_container_id="74080122d165"
julius@docker-host:$> some_domain="example.com"
# run nsenter
# $(docker inspect --format returns the IP of the docker container
julius@docker-host:$> nsenter \
--target $(docker inspect --format {{.State.Pid}} $docker_container_name) \
-n telnet $some_domain 443
# output
Trying 93.184.216.34...
Connected to example.com.
Escape character is '^]'.
This post is licensed under CC BY 4.0 by the author.