#!/bin/bash # this borrows from https://github.com/jpetazzo/pipework set -e GUESTNAME=$1 shift 1 [ "$GUESTNAME" ] || { echo "Syntax:" echo "docker-ns ..." exit 1 } DOCKERPID=$(docker inspect --format='{{ .State.Pid }}' $GUESTNAME) [ "$DOCKERPID" = 0 ] && { echo "Docker inspect returned invalid PID 0" exit 1 } [ "$DOCKERPID" = "" ] && { 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