65 lines
1.2 KiB
Bash
Executable File
65 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
function print_help_and_exit() {
|
|
cat <<EOF
|
|
Open a shell inside the docker container
|
|
Usage: docker_shell.sh [OPTIONS] [CONTAINER]
|
|
|
|
Options:
|
|
-u,--user The user to login with in the container (defaults to the current user)
|
|
-c,--container The container name (may also be specified as positional arg)
|
|
-h,--help Print this help message and exit
|
|
|
|
EOF
|
|
exit "$1"
|
|
}
|
|
|
|
|
|
declare docker_user=""
|
|
declare cont_name=""
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-u)
|
|
;&
|
|
--user)
|
|
if [[ -z "$2" ]]; then
|
|
echo "User (-u,--user) must be non-empty"
|
|
print_help_and_exit 1
|
|
fi
|
|
docker_user="$2"
|
|
shift 2
|
|
;;
|
|
-h)
|
|
;&
|
|
--help)
|
|
print_help_and_exit 0
|
|
;;
|
|
-c)
|
|
;&
|
|
--container)
|
|
shift 1
|
|
;&
|
|
*)
|
|
if [[ ! -z "$cont_name" ]]; then
|
|
echo "Unexpected argument '$1'"
|
|
print_help_and_exit 1
|
|
fi
|
|
cont_name="$1"
|
|
shift 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
if [[ -z "$cont_name" ]]; then
|
|
echo "Please specify the container ([-c,--container])"
|
|
print_help_and_exit 1
|
|
fi
|
|
|
|
if [[ -z "$docker_user" ]]; then
|
|
docker_user="$USER"
|
|
fi
|
|
|
|
docker exec -u "$docker_user" -it "$cont_name" bash
|