Podman yang diberikan diinstal pada sistem linux dan unit systemd bernama 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
Dan layanan baz.ser dimulai:
# systemctl daemon-reload
# systemctl start baz.service
Kemudian ketika saya memeriksa status unit saya tidak melihat sh
atau sleep
proses di /system.slice/baz.service cgroup
# 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
# ...
Saya mengharapkan untuk melihat sh
dan sleep
anak - anak dalam status baz.service saya karena saya telah mendengar orang-orang dari redhat mengatakan podman menggunakan model fork-exec tradisional.
Jika podman melakukan fork dan exec, maka bukankah proses saya sh
dan sleep
menjadi anak-anak podman dan berada dalam kelompok yang sama dengan proses podman asli?
Saya berharap dapat menggunakan systemd dan podman untuk dapat mengelola wadah saya tanpa anak-anak pergi ke orang tua yang berbeda dan melarikan diri dari unit ssystemd baz.service saya.
Melihat output dari ps
saya dapat melihat itu sh
dan sleep
sebenarnya adalah anak-anak dari proses yang berbeda yang disebut conmon
. Saya tidak yakin dari mana conmon berasal, atau bagaimana itu dimulai tetapi systemd tidak menangkapnya.
# ps -Heo user,pid,ppid,comm
# ...
root 17254 1 podman
root 17331 1 conmon
root 17345 17331 sh
root 17380 17345 sleep
Dari outputnya jelas bahwa unit baz.service saya tidak mengelola conmon -> sh -> sleep chain.
- Bagaimana podman berbeda dari model server klien buruh pelabuhan?
- Apa perbedaan antara podman podman dengan isi docker?
Mungkin mereka berdua runtimes kontainer dan dockerd
daemon adalah apa yang orang ingin singkirkan.
Jadi mungkin buruh pelabuhan itu seperti:
- daemon dockerd
- buruh pelabuhan cli
- berisi runtime kontainer
Dan podman seperti:
- podman cli
- runtime wadah conmon
Jadi mungkin podman menggunakan model fork exec tradisional tapi itu bukan podman cli yang forking dan exec, itu proses pemanggilan.
Saya bingung.