37 lines
735 B
Bash
Executable File
37 lines
735 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# this borrows from https://github.com/jpetazzo/pipework
|
|
|
|
set -e
|
|
|
|
GUESTNAME=$1
|
|
shift 1
|
|
|
|
[ "$GUESTNAME" ] || {
|
|
echo "Syntax:"
|
|
echo "docker-ns <guest> <command> <arg> ..."
|
|
exit 1
|
|
}
|
|
|
|
DOCKERPID=$(docker inspect --format='{{ .State.Pid }}' $GUESTNAME)
|
|
[ "$DOCKERPID" = 0 ] && {
|
|
echo "Docker inspect returned invalid PID 0"
|
|
exit 1
|
|
}
|
|
[ "$DOCKERPID" = "<no value>" ] && {
|
|
echo "Container $GUESTNAME unknown to Docker."
|
|
exit 1
|
|
}
|
|
|
|
NSPID=$DOCKERPID
|
|
|
|
[ ! -d /var/run/netns ] && mkdir -p /var/run/netns
|
|
[ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID
|
|
ln -s /proc/$NSPID/ns/net /var/run/netns/$NSPID
|
|
|
|
ip netns exec $NSPID "$@"
|
|
|
|
[ -f /var/run/netns/$NSPID ] && rm -f /var/run/netns/$NSPID
|
|
|
|
exit 0
|