summary refs log tree commit diff
path: root/bin/enter
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbin/enter (renamed from bin/hibiki/enter)14
1 files changed, 12 insertions, 2 deletions
diff --git a/bin/hibiki/enter b/bin/enter
index 67a9806..d646541 100755
--- a/bin/hibiki/enter
+++ b/bin/enter
@@ -6,6 +6,7 @@ target=
 img=""
 dockerfile="${PWD}/Dockerfile"
 become=
+priv=
 
 usage() {
 	printf "usage: %s OPTIONS -- [DOCKER RUN ARGS]\n" "$(basename "$0")"
@@ -14,17 +15,19 @@ usage() {
 	printf "  -i IMAGE\n"
 	printf "  -f DOCKERFILE\n"
 	printf "  -u (become user)\n"
+	printf "  -D (run with elevated privileged, but not privileged)\n"
 	printf "\n"
 	printf "Enter the container defined in Dockerfile, with \$PWD mounted at /src\n"
 	exit 2
 }
 
-while getopts t:i:f:uh o; do
+while getopts t:i:f:uDh o; do
 	case $o in
 	t) 	target="$OPTARG" ;;
 	i) 	img="$OPTARG" ;;
 	f) 	dockerfile="$OPTARG" ;;
 	u) 	become=1 ;;
+	D)	priv=1 ;;
 	h|?) 	usage ;;
 	esac
 done
@@ -33,7 +36,14 @@ shift $((OPTIND - 1))
 [ -z "$img" ] && img="$(basename "$(dirname "$(readlink -f -- "$dockerfile")")")"
 
 extra_args=
-[ -n "$become" ] && extra_args="--user=$(id -u):$(id -g)"
+[ -n "$become" ] && extra_args="${extra_args}--user=$(id -u):$(id -g) "
+[ -n "$priv"   ] && {
+	extra_args="${extra_args}--tmpfs=/run --tmpfs=/sys/fs/cgroup ";
+	extra_args="${extra_args}--sysctl=net.ipv4.ip_forward=1 ";
+	extra_args="${extra_args}--security-opt=apparmor:unconfined --security-opt=seccomp:unconfined ";
+	extra_args="${extra_args}--cap-add NET_ADMIN --cap-add SYS_ADMIN --cap-add SYS_RESOURCE ";
+	extra_args="${extra_args}--tmpfs=/var/lib/docker ";
+}
 
 # allow setting this to some non-file value to skip building
 # > enter -i alpine -f none