Ho un programma eseguito in un contenitore finestra mobile con modalità scollegata.Come inviare il segnale al programma eseguito in un contenitore docker?
Quindi, come inviare un segnale come SIGINT a questo programma?
Ho un programma eseguito in un contenitore finestra mobile con modalità scollegata.Come inviare il segnale al programma eseguito in un contenitore docker?
Quindi, come inviare un segnale come SIGINT a questo programma?
È possibile utilizzare nsenter per accedere al proprio spazio contenitore e inviare il segnale.
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>
Maggiori informazioni: http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/
È possibile utilizzare docker kill --signal="<signal>" <container name or id>
per inviare alcun segnale per il processo principale di un determinato contenitore.
Vedi http://docs.docker.com/engine/reference/commandline/kill/
Sì, ma il programma a cui voglio inviare il segnale è un programma eseguito nel contenitore ma non al processo di root. per esempio. eseguire una bash in una finestra mobile, quindi eseguire un altro comando nella bash nella finestra mobile. Grazie per la tua risposta. – atupal
docker kill
utilizzata per inviare il segnale di processo principale cioè processo contenitore con PID 1.$ docker kill --signal="SIGTERM" container-id/name
Dockerfile
. (Aggiornarlo come per l'applicazione)FROM centos:6.7
# Install/Deploye the service below.
# Copy the shell script.
COPY entrypoint.sh /home
EXPOSE 8080
ENTRYPOINT ["/home/entrypoint.sh"]
riportano di seguito le entrypoint.sh
. (Aggiornalo come da applicazione). Supponiamo di voler riavviare un servizio init.d
.
#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
$docker kill --signal="SIGUSR1" container-id/name
sono riuscito a inviare un segnale che voglio un processo (programma) in un contenitore finestra mobile per:
Ora è possibile utilizzare 'docker exec' anziché nsenter. https://docs.docker.com/reference/commandline/exec/ – Andy