docker kill
se utiliza para enviar la señal al proceso del contenedor principal, es decir, el proceso con PID 1.- Cualquier aplicación con PID 1 puede manejar señales directamente. El siguiente comando elimina el proceso principal de la ventana acoplable:
$ docker kill --signal="SIGTERM" container-id/name
- Pero la aplicación que no tiene PID 1, es decir, la aplicación es un proceso en segundo plano:
- No podemos enviar solos directamente a ningún proceso en segundo plano que se ejecute dentro del contenedor docker.
- En este caso, necesitamos atrapar y manejar la señal definida por el usuario en el script de shell que se ejecuta como punto de entrada.
- Vamos a tener el siguiente
Dockerfile
. (Actualícelo según la aplicación)
FROM centos:6.7
# Install/Deploye the service below.
# Copy the shell script.
COPY entrypoint.sh /home
EXPOSE 8080
ENTRYPOINT ["/home/entrypoint.sh"]
-
A continuación se muestra el
entrypoint.sh
. (Actualícelo según la aplicación). Supongamos que queremos reiniciar uninit.d
servicio.#start the service /etc/init.d/<servicename> start pid="$!" # SIGUSR1- Single handler my_handler() { /etc/init.d/<servicename> restart } # Trap and handle the user defind singnal. trap 'my_handler' SIGUSR1 # wait forever(Alive container.) while true do tail -f /dev/null & wait ${!} done
- Cree la imagen de la ventana acoplable y ejecute el contenedor.
- Ahora puede reiniciar el servicio desde la máquina Host:
$docker kill --signal="SIGUSR1" container-id/name
Puedes usar docker kill --signal="<signal>" <container name or id>
para enviar cualquier señal al proceso raíz de un contenedor dado.
Consulte https://docs.docker.com/engine/reference/commandline/kill/#send-a-custom-signal--to-a-container
Puede usar nsenter para ingresar al espacio de su contenedor y enviar su señal.
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid kill -SIGINT <PID of your program inside your container>
Más información:http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/