Dado podman se instala en un sistema Linux y una unidad systemd llamada baz.service:
# /etc/systemd/system/baz.service
[Service]
ExecStart=/usr/bin/podman run --rm --tty --name baz alpine sh -c 'while true; do date; sleep 1; done'
ExecStop=/usr/bin/podman stop baz
Y comenzó el servicio baz.ser:
# systemctl daemon-reload
# systemctl start baz.service
Luego, cuando puedo comprobar el estado de la unidad no veo el sh
o sleep
proceso en el cgroup /system.slice/baz.service
# systemctl status baz
● baz.service
Loaded: loaded (/etc/systemd/system/baz.service; static; vendor preset: enabl
Active: active (running) since Sat 2019-08-10 05:50:18 UTC; 14s ago
Main PID: 16910 (podman)
Tasks: 9
Memory: 7.3M
CPU: 68ms
CGroup: /system.slice/baz.service
└─16910 /usr/bin/podman run --rm --tty --name baz alpine sh -c while
# ...
Yo estaba esperando a ver el sh
e sleep
hijos en mi estado baz.service porque he oído a la gente de decir RedHat podman utiliza un modelo tradicional tenedor-ejecutivo.
Si podman hizo fork y exec, ¿entonces mi sh
y sleep
proceso no serían hijos de podman y estarían en el mismo cgroup que el proceso original de podman?
Esperaba poder usar systemd y podman para poder administrar mis contenedores sin que los niños se vayan a un padre diferente y escapen de mi unidad baz.service ssystemd.
Mirando la salida de ps
puedo ver eso sh
y en sleep
realidad son hijos de un proceso diferente llamado conmon
. No estoy seguro de dónde vino Conmon, o cómo se inició, pero systemd no lo capturó.
# ps -Heo user,pid,ppid,comm
# ...
root 17254 1 podman
root 17331 1 conmon
root 17345 17331 sh
root 17380 17345 sleep
De la salida está claro que mi unidad baz.service no está administrando la cadena de sueño conmon -> sh ->.
- ¿En qué se diferencia Podman del modelo de servidor del cliente de Docker?
- ¿En qué se diferencia el conmon de Podman de los contenedores de Docker?
Tal vez ambos son tiempos de ejecución de contenedores y el dockerd
demonio es de lo que la gente quiere deshacerse.
Entonces quizás Docker es como:
- dockerd daemon
- docker cli
- contenedor contenedor tiempo de ejecución
Y podman es como:
- podman cli
- tiempo de ejecución del contenedor conmon
Entonces, tal vez podman use un modelo tradicional de ejecución de horquilla, pero no es el cli de podman el que se bifurca y el ejecutivo, es el proceso de conmon.
Me siento confundido.