diff --git a/scripts/eda_docker_cmd.sh b/scripts/eda_docker_cmd.sh
new file mode 100755
index 000000000..f2fb4e379
--- /dev/null
+++ b/scripts/eda_docker_cmd.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+USAGE_EXIT_CODE=3
+FIRST_ARG=$1
+FINAL_EXIT_CODE=0
+CONTAINER_ID=$2
+EDA_DOCKER_COMPOSE_YML_DIR=${EDA_DOCKER_COMPOSE_YML_DIR:-'../tools/docker/docker-compose-mac.yml'}
+
+check_docker_compose_install_or_not(){
+	DOCKER_COMPOSE_CODE=1
+	which docker-compose &>/dev/null
+	[ $? -ne 0 ] && echo "Please check docker-compose install or not." && exit $DOCKER_COMPOSE_CODE
+}
+
+check_docker_cmd_install_or_not(){
+    DOCKER_CODE=2
+    which docker &>/dev/null
+    [ $? -ne 0 ] && echo "Please check docker install or not." && exit $DOCKER_CODE
+}
+
+quick_open_a_docker_shell(){
+    docker exec -it $CONTAINER_ID /bin/bash
+}
+
+check_docker_log() {
+  docker logs $CONTAINER_ID
+}
+
+check_args() {
+    WARNING_VARIABLE=$1
+   if [ $# != 3 ]
+   then
+        echo ${WARNING_VARIABLE}
+        exit
+   fi
+}
+
+# Script usage.
+if [ $# -eq 0 ]
+then
+    echo "============================================================================="
+    echo "To manage the docker cmd easily."
+    echo "NOTE:"
+    echo "Make sure the base container environment already setup."
+    echo "The default docker-compose yml is ../tools/docker/docker-compose-mac.yml"
+    echo 'You can export yml dir e.g.: export EDA_DOCKER_COMPOSE_YML_DIR="/path/docker-compose-mac.yml"'
+    echo "Usage: `basename $0` [ARGS]"
+    echo "  up                                 Run: docker-compose -f docker-compose-mac.yml up -d"
+    echo "  down                               Run: docker-compose -f docker-compose-mac.yml down -v"
+    echo "  lp,list-process                    List the process"
+    echo "  li,list-images                     List the images"
+    echo "  dl,docker-log                      To check single docker log with container id"
+    echo "  dcl,docker-compose-log             To check docker-compose log"
+    echo "  s,shell                            Open a docker shell quickly with container id"
+    echo "  ri,remove-image                    Remove images with container id"
+    echo "============================================================================="
+    exit $USAGE_EXIT_CODE
+fi
+
+case "$FIRST_ARG" in
+	up)
+		check_docker_compose_install_or_not
+		docker-compose -f ${EDA_DOCKER_COMPOSE_YML_DIR} up -d
+		;;
+	down)
+		check_docker_compose_install_or_not
+		docker-compose -f ${EDA_DOCKER_COMPOSE_YML_DIR} down -v
+		;;
+    lp|list-process)
+        check_docker_cmd_install_or_not
+        docker ps -a | egrep "docker-eda-default-worker-1|docker-postgres-1|docker-eda-ws-1|docker-redis-1|docker-eda-api-1|docker-eda-scheduler-1|docker-eda-activation-worker-1|docker-eda-activation-worker-2|docker-eda-ui-1"
+        ;;
+    li|list-images)
+        check_docker_cmd_install_or_not
+        echo "REPOSITORY                        TAG         IMAGE ID      CREATED        SIZE"
+        docker images | egrep "eda-ui|eda-server|redis-6-c9s|postgresql-13-c9s"
+        ;;
+    s|shell)
+        check_docker_cmd_install_or_not
+        check_args "Usage: eda_docker_cmd.sh s <container_id>"  "$@"
+        quick_open_a_docker_shell
+        ;;
+    dl|docker-log)
+        check_docker_cmd_install_or_not
+        check_args "Usage: eda_docker_cmd.sh dl <container_id>"  "$@"
+        check_docker_log
+        ;;
+     dcl|docker-compose-log)
+        check_docker_compose_install_or_not
+        docker-compose -f ${EDA_DOCKER_COMPOSE_YML_DIR} logs --follow
+        ;;
+     ri|remove-image)
+        check_docker_cmd_install_or_not
+        shift 1
+        [ $# -lt 1 ] && echo "Usage: eda_docker_cmd.sh rmi <image_id1> <image_id2>" && exit
+        echo "$@"
+        docker rmi "$@"
+        ;;
+       *)
+		echo "No this option, please check the usage!!"
+		exit $FINAL_EXIT_CODE
+		;;
+esac
+exit