O processo com o PID 1 é o processo init. Isso permanece verdadeiro em um namespace pid ou em um container: este pid 1 não pode ser eliminado com SIGKILL
porque ele não tem nenhum manipulador de sinal KILL
definido, ao contrário de qualquer outro processo userland.
Se você realmente quer matá-lo, você tem que matá-lo do host . Rodando no host (com privilégios suficientes, provavelmente root):
kill -KILL $(docker inspect --format '{{.State.Pid}}' containername)
Isso derrubará todo o contêiner, pois a remoção do PID 1 significa parar o contêiner. Por favor, note que eu respondi ao título da pergunta, mas não ao problema subjacente: o que está causando OOM.
UPDATE: provavelmente, é mais simples de usar docker kill
, cujo padrão é o sinal KILL
. Isso seria:
docker kill containername
UPDATE2: convence que o PID 1 não pode ser eliminado com SIGKILL
(também conhecido como -9
), mesmo em um contêiner (o exemplo requer que o namespace do usuário seja ativado, use apenas unshare --mount-proc --fork --pid
como root) .
primeiro terminal:
$ unshare --map-root-user --mount-proc --fork --pid
# echo $$
1
# pstree -p
bash(1)---pstree(88)
# kill -9 1
#
sem efeito
Em um segundo terminal:
$ pstree -p $(pidof unshare)
unshare(2023)───bash(2024)
$ kill -9 2024
primeiro terminal:
# Killed
$