Данный podman установлен в системе Linux и системном модуле с именем 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
И начался баз.сервис:
# systemctl daemon-reload
# systemctl start baz.service
Затем, когда я проверяю состояние модуля, я не вижу sh
или sleep
процесс в 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
# ...
Я ожидал увидеть sh
и sleep
детей в моем статусе baz.service, потому что слышал, как люди из redhat говорят, что podman использует традиционную модель fork-exec.
Если podman сделал fork и exec, то не будут ли my sh
и sleep
process дочерними по отношению к podman и были бы в той же группе, что и исходный процесс podman?
Я ожидал, что смогу использовать systemd и podman, чтобы иметь возможность управлять моими контейнерами без перехода детей к другому родителю и выхода из моего модуля baz.service ssystemd.
Глядя на выходе ps
я вижу , что sh
и sleep
на самом деле дети другого процесса , который называется conmon
. Я не уверен, откуда появился conmon или как он был запущен, но systemd не захватил его.
# ps -Heo user,pid,ppid,comm
# ...
root 17254 1 podman
root 17331 1 conmon
root 17345 17331 sh
root 17380 17345 sleep
Из вывода ясно, что мой модуль baz.service не управляет цепочкой conmon -> sh -> sleep.
- Чем podman отличается от модели сервера-докера?
- Чем отличается приман подмана от контейнера докера?
Возможно, они оба являются средами выполнения контейнеров, и dockerd
демон - это то, от чего люди хотят избавиться.
Так что, возможно, докер это как:
- Dockerd Daemon
- докер кли
- контейнерная среда выполнения
И Подман это как:
- подман кли
- время выполнения контейнера conmon
Так что, возможно, podman использует традиционную модель fork exec, но это не podman cli, который разветвляется и exec, это процесс conmon.
Я чувствую себя смущенным.