Files
weave/bin/docker-ns
T
2014-10-22 14:29:18 +01:00

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