#/bin/bash
docker run ubuntu sleep 3000
I have a bash script which runs docker container but when the script is terminated using kill -9 the docker container continues to run. How can i terminate the docker container when bash script is killed?
I tried using trap but SIGKILL signal can't be trapped so i am trying to find if there are any alternate ways to stop the container
CodePudding user response:
Try kill -9 -- -<PGID>
.
For example, I have
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
4126 4416 4416 4126 pts/0 4416 S 1000 0:00 /bin/bash ./test
4416 4417 4416 4126 pts/0 4416 S 1000 0:00 sleep 3000
Then, kill -9 -- -4416
will kill both process.
CodePudding user response:
Actually you can stop your docker container.
docker run ubuntu sleep 3000
will create a docker image an launch it in a container.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59ba158952c9 ubuntu "sleep 3000" 4 seconds ago Up 3 seconds infallible_jackson
34fbe4742f34 ubuntu "sleep 1000" 40 seconds ago Exited (137) 17 seconds ago confident_perlman
80a4d44a23be ubuntu "sleep 1000" 2 minutes ago Exited (137) About a minute ago busy_colden
e40b91d7b13f ubuntu "sleep 100" 4 minutes ago Exited (0) 2 minutes ago trusting_merkle
then you can docker stop 59ba158952c9 (id of the container you want to stop). and the remove it if necessary
docker rm 59ba158952c9
I suggest you to have a look at the following documentations: https://docs.docker.com/engine/reference/commandline/stop/ https://docs.docker.com/engine/reference/commandline/container_rm/
Sorry my answer was not full complete.
let's add the docker command in a script
echo "docker run ubuntu sleep 3000" > toto.sh
then kill -9 the script: ps -aux | grep toto
mytoto 1320784 0.0 0.0 12664 3288 pts/15 S 07:49 0:00 bash toto.sh
then the docker container is still active and you and retrieve it with a grep for instance:
docker ps | grep "ubuntu.*sleep 3000" | cut -d" " -f1
2baf9fb7223d
copy the id in the variable ID
ID=$(docker ps | grep "ubuntu.*sleep 3000" | cut -d" " -f1)
echo $ID
2baf9fb7223d
And finally stop / remove the container
docker container stop "${ID}"
docker container rm "${ID}"