#!/bin/sh OPTIND=1 delete="" name="" ports="" volumes="" show_help() { cat << EOF Usage: ${0##*/} [-hx] [-n NAME] [-p PORT]... [-v LIST]... [CMD]... Starts an env Docker container. If CMD is specified, starts CMD instead of a shell. -h display this help and exit -x delete Docker container after exit. will loose data -p PORT forward host PORT to container PORT -v LIST mount volume LIST. specify as LOCAL:MOUNT EOF } while getopts "hxn:p:v:" opt; do case "$opt" in x) delete="--rm " ;; n) name="--name $OPTARG " ;; p) ports="-p $OPTARG:$OPTARG $ports" ;; v) volumes="$volumes\n\t-v $OPTARG " ;; h) show_help exit 0 ;; :) echo "Option -$OPTARG requires an argument." >&2 show_help exit 1 ;; \?) echo "Invalid option: -$OPTARG" >&2 show_help exit 1 ;; esac done shift $((OPTIND-1)) [ "$1" = "--" ] && shift docker pull registry.labs.0x.no/env cmd="\n\ docker run -it $delete$name\n\ $ports$volumes\n\ -v $PWD:/home/ambrose/src \n\ -v $HOME/.ssh:/home/ambrose/.ssh \n\ registry.labs.0x.no/env \n\ $@\ " echo echo "Running: $cmd" echo `echo $cmd`