22
33set -e
44
5- IMAGE_TAG=ngraph
5+ DEFAULT_IMAGE_TAG=ngraph
6+ IMAGE_TAG=${2:- $DEFAULT_IMAGE_TAG }
7+ DEFAULT_CONTAINER_NAME=ngraph_jupyter
8+ CONTAINER_NAME=${3:- $DEFAULT_CONTAINER_NAME }
69IMAGE_ID=$( docker images --format " {{.ID}}" $IMAGE_TAG )
710
8- USAGE=" Usage: $0 COMMAND IMAGE_TAG\n"
9- USAGE+=" COMMAND is what you expect script to do:\n"
11+ USAGE=" Usage: $0 COMMAND [ IMAGE_TAG] [CONTAINER_NAME] \n"
12+ USAGE+=" COMMAND is what you expect the script to do:\n"
1013USAGE+=" build - Builds an image from a Dockerfile.\n"
11- USAGE+=" run - Runs a container.\n"
12- USAGE+=" killall - Stops and removes all running containers.\n"
13- USAGE+=" forcecleanall - Clean-up Docker.\n"
14+ USAGE+=" run - Runs a container and starts Jupyter.\n"
15+ USAGE+=" shell - Attaches to the shell of a running container.\n"
16+ USAGE+=" killall - Stops and removes all running containers based on the image tag.\n"
17+ USAGE+=" forcecleanall - WARNING: Stops and removes all containers and images. This action cannot be undone.\n"
18+ USAGE+=" IMAGE_TAG is the optional Docker image tag (default: $DEFAULT_IMAGE_TAG ).\n"
19+ USAGE+=" CONTAINER_NAME is the optional Docker container name (default: $DEFAULT_CONTAINER_NAME ).\n"
1420
1521if [[ $# -lt 1 ]]; then
1622 echo>&2 " ERROR: Must specify the command"
2127[[ $( uname) -eq " Darwin" ]] && MODHACK=" -v /lib/modules:/lib/modules:ro" || MODHACK=" "
2228
2329function build {
24- echo " Building docker container"
30+ echo " Building docker container with tag $IMAGE_TAG "
2531 docker build . -t $IMAGE_TAG
2632
2733 IMAGE_ID=$( docker images --format " {{.ID}}" $IMAGE_TAG )
@@ -30,18 +36,24 @@ function build {
3036}
3137
3238function run {
33- name=ngraph_jupyter
34- echo " Starting a container with the name $name using $IMAGE_TAG image..."
35- CONTAINER_ID=$( docker create --rm -it --name $name -v " $PWD " :/root/env -p 8787:8787 --entrypoint=/bin/bash --privileged $MODHACK --cap-add ALL $IMAGE_TAG )
39+ echo " Starting a container with the name $CONTAINER_NAME using $IMAGE_TAG image..."
40+ CONTAINER_ID=$( docker create --rm -it --name $CONTAINER_NAME -v " $PWD " :/root/env -p 8787:8787 --entrypoint=/bin/bash --privileged $MODHACK --cap-add ALL $IMAGE_TAG )
3641 docker start $CONTAINER_ID
37- echo " Started $CONTAINER_ID with the name $name "
42+ echo " Started $CONTAINER_ID with the name $CONTAINER_NAME "
3843 docker exec -it $CONTAINER_ID pip install -e .
3944 echo " Starting Jupyter in a container. Open http://127.0.0.1:8787/ in your browser."
4045 docker exec -it $CONTAINER_ID jupyter notebook --port=8787 --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token=' ' /root/env
4146 return 0
4247}
4348
49+ function shell {
50+ echo " Attaching to the shell of the running container $CONTAINER_NAME ..."
51+ docker exec -it $CONTAINER_NAME /bin/bash
52+ return 0
53+ }
54+
4455function killall {
56+ echo " Stopping and removing all running containers based on the image tag $IMAGE_TAG ..."
4557 for container_id in $( docker ps -q --filter " ancestor=$IMAGE_TAG " ) ; do
4658 echo " $( docker kill $container_id ) - stopped and removed"
4759 done
@@ -50,6 +62,13 @@ function killall {
5062}
5163
5264function forcecleanall {
65+ echo " WARNING: This will stop and remove all containers and images. This action cannot be undone."
66+ read -p " Are you sure you want to proceed? (Y/N): " confirm
67+ if [[ $confirm != [Yy] ]]; then
68+ echo " Aborting forcecleanall."
69+ return 1
70+ fi
71+
5372 for container in $( docker container ls --format " {{.ID}}" ) ; do docker container kill $container ; done
5473 for container in $( docker container ls -a --format " {{.ID}}" ) ; do docker container rm $container ; done
5574 for image in $( docker images --format " {{.ID}}" ) ; do docker image rm --force $image ; done
@@ -68,6 +87,11 @@ case $1 in
6887 run " $@ "
6988 ;;
7089
90+ shell)
91+ echo " Executing SHELL command..."
92+ shell " $@ "
93+ ;;
94+
7195 killall)
7296 echo " Executing KILLALL command..."
7397 killall " $@ "
@@ -83,4 +107,4 @@ case $1 in
83107 printf " $USAGE " >&2
84108 exit 2
85109 ;;
86- esac
110+ esac
0 commit comments