Hi There,
Description: Ubuntu 20.04.2 LTS
Release: 20.04
i am running the container with /bin/bash command i.e PID1. I have installed MySQL and ngnix inside that container and the processes are started too.
root@docker-ubuntu:~# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef65adf3f1d8 db25d2007d0f “/bin/bash” 2 hours ago Up About an hour happy_lumiere
root@docker-ubuntu:~#
root@docker-ubuntu:~# docker top ef65adf3f1d8
UID PID PPID C STIME TTY TIME CMD
root 3639 3613 0 18:57 ? 00:00:00 /bin/bash
root 3703 3639 0 18:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 3704 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3705 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3706 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3707 3703 0 18:57 ? 00:00:00 nginx: worker process
root 3748 3639 0 18:57 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
systemd+ 4691 3748 0 19:38 ? 00:00:02 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root@docker-ubuntu:~#
Now if i try to stop the container that doesn’t work:
root@docker-ubuntu:~# docker stop ef65adf3f1d8
Error response from daemon: cannot stop container: ef65adf3f1d8: Cannot kill container ef65adf3f1d89819c3ef84e128ce0631b951cbe83eb0e279fb2f1b5add99f5d9: unknown error after kill: runc did not terminate sucessfully: container_linux.go:392: signaling init process caused “permission denied”
: unknown
root@docker-ubuntu:~#
Now the reason behind its not stopping is that there are two processes i.e mysqld and ngnix are running. If docker tries to stop the PID1 i.e /bin/bash. It doesn’t work as others are running.
So i tried to kill those two process:
root@docker-ubuntu:~# docker exec ef65adf3f1d8 kill -9 3703
root@docker-ubuntu:~# docker exec ef65adf3f1d8 kill -9 4691
root@docker-ubuntu:~#
Conceptually this should work however it not working at all:
root@docker-ubuntu:~# docker exec ef65adf3f1d8 kill -9 3703
root@docker-ubuntu:~# docker exec ef65adf3f1d8 kill -9 4691
root@docker-ubuntu:~# docker top ef65adf3f1d8
UID PID PPID C STIME TTY TIME CMD
root 3639 3613 0 18:57 ? 00:00:00 /bin/bash
root 3703 3639 0 18:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 3704 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3705 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3706 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3707 3703 0 18:57 ? 00:00:00 nginx: worker process
root 3748 3639 0 18:57 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
systemd+ 4691 3748 0 19:38 ? 00:00:03 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
thought of killing the process from the host machine whose PID is 4691 i.e mysqld:
root@docker-ubuntu:~# kill -9 4691
root@docker-ubuntu:~# docker top ef65adf3f1d8
UID PID PPID C STIME TTY TIME CMD
root 3639 3613 0 18:57 ? 00:00:00 /bin/bash
root 3703 3639 0 18:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
www-data 3704 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3705 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3706 3703 0 18:57 ? 00:00:00 nginx: worker process
www-data 3707 3703 0 18:57 ? 00:00:00 nginx: worker process
root 3748 3639 0 18:57 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
systemd+ 5236 3748 2 20:28 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
root@docker-ubuntu:~#
see process mysqld is there with another pid.
Can anyone help me with this how-to stop a container from the HOST machine without entering into the container shell?
Is there any way out?