Ua leva ona matou mulimuli i le autu o le faʻaogaina o le systemd i pusa. I tua i le 2014, na tusia ai e le matou inisinia saogalemu Daniel Walsh se tusiga
I lenei tusiga o le a tatou faʻaalia le mea ua suia i le taimi ma le auala e mafai ai e Podman ona fesoasoani ia i tatou i lenei mataupu.
E tele mafuaʻaga e faʻatautaia ai le systemd i totonu o se atigipusa, e pei o:
- Koneteina tele auaunaga - e toʻatele tagata e mananaʻo e toso a latou talosaga e tele-auʻaunaga mai masini faʻapitoa ma faʻataʻitaʻiina i totonu o pusa. E sili atu, ioe, le talepeina o ia talosaga i microservices, ae le o tagata uma e iloa pe faʻapefea ona faia lenei mea pe leai foi se taimi. O le mea lea, o le faʻatinoina o ia talosaga e pei o auaunaga na faʻalauiloaina e systemd mai faila faila e talafeagai lelei.
- Systemd Unit Files - O le tele o talosaga o loʻo faʻaogaina i totonu o koneteina e fausia mai le faʻailoga na taʻavale muamua i masini faʻapitoa poʻo masini faaletino. O nei talosaga o lo'o i ai se faila faila na tusia mo nei talosaga ma malamalama pe fa'apefea ona fa'alauiloa. O lea e sili atu le amataina o auʻaunaga e faʻaaoga ai metotia lagolago, nai lo le taʻavaleina o lau lava auaunaga init.
- Systemd o se pule o le faagasologa. E faia le pulega o auaunaga (tapuni, toe amata auaunaga, poʻo le fasiotia o faiga zombie) sili atu nai lo se isi lava meafaigaluega.
Na fai mai, e tele mafuaʻaga e le faʻatautaia ai le systemd i totonu o pusa. Ole mea autu ole systemd/journald e pulea le gaosiga o koneteina, ma meafaigaluega e pei o
Le Afio Mai o Podman
Matou te fiafia e lipoti atu ua iu lava ina agai i luma le tulaga. O le 'au e nafa ma le faʻatautaia o koneteina i Red Hat na filifili e atiaʻe
E toatele tagata latou te faia lenei mea.
O aʻu ma laʻu Podman e leai se auala e teteʻe ai i pusa faʻavae systemd. A uma mea uma, o le Systemd o le Linux init subsystem e masani ona faʻaaogaina, ma le le faʻatagaina e galue lelei i totonu o koneteina o lona uiga o le le amanaʻiaina pe faʻafefea ona masani le faitau afe o tagata i le faʻaogaina o koneteina.
Ua iloa e Podman le mea e fai e fa'aoga lelei ai le systemd i totonu o se atigipusa. E manaʻomia mea e pei o le faʻapipiʻiina o tmpfs i luga / run ma / tmp. E fiafia o ia e fa'aagaoioi le si'osi'omaga "containerized" ma fa'amoemoe e tusi fa'atagaga i lana vaega o le cgroup directory ma le /var/log/journald folder.
A e amataina se atigipusa o loʻo i ai le faʻatonuga muamua poʻo le systemd, e otometi lava ona faʻapipiʻi e Podman tmpfs ma Cgroups e faʻamautinoa ai e amata le systemd e aunoa ma ni faʻafitauli. Ina ia poloka lenei faiga faʻalauiloa taʻavale, faʻaaoga le --systemd=false filifiliga. Faamolemole ia matau o Podman e naʻo le faʻaogaina o le systemd mode pe a vaʻaia e manaʻomia le faʻaogaina o se systemd poʻo le init command.
O se vaega lenei mai le tusi lesona:
tagata podman tamoe
...–systemd=moni|sese
Fa'atino se koneteina ile systemd mode. Fa'aaga e ala i le fa'aletonu.
Afai e te faʻatautaia se systemd poʻo se init command i totonu o se atigipusa, Podman o le a faʻapipiʻi tmpfs mount points i totonu o faʻatonuga nei:
/run, /run/loka, /tmp, /sys/fs/cgroup/systemd, /var/lib/journal
E fa'apea fo'i le fa'ailoga fa'agata fa'agata ole SIGRTMIN+3.
O nei mea uma e mafai ai e systemd ona tamoe i totonu o se pusa tapuni e aunoa ma ni suiga.
FAAMANATU: systemd taumafai e tusi i le cgroup filesystem. Ae ui i lea, SELinux puipuia pusa mai le faia o lenei mea e ala i le faaletonu. Ina ia mafai ona tusitusi, ia mafai le container_manage_cgroup boolean parameter:
setsebool -P container_manage_cgroup moni
Vaʻai nei i foliga o le Dockerfile mo le faʻaogaina o le systemd i totonu o se atigipusa e faʻaaoga ai Podman:
# cat Dockerfile
FROM fedora
RUN dnf -y install httpd; dnf clean all; systemctl enable httpd
EXPOSE 80
CMD [ "/sbin/init" ]
Pau lava lena.
O lea ua matou faʻapipiʻi le koneteina:
# podman build -t systemd .
Matou te taʻu atu ia SELinux e faʻataga le systemd e sui le faʻatulagaga Cgroups:
# setsebool -P container_manage_cgroup true
O le tele o tagata, i le ala, galo e uiga i lenei laasaga. O le mea e lelei ai, e naʻo le tasi le mea e manaʻomia ona fai ma faʻasaoina le seti pe a uma ona toe faʻafouina le faiga.
O lea faatoa amata le koneteina:
# podman run -ti -p 80:80 systemd
systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid)
Detected virtualization container-other.
Detected architecture x86-64.
Welcome to Fedora 29 (Container Image)!
Set hostname to <1b51b684bc99>.
Failed to install release agent, ignoring: Read-only file system
File /usr/lib/systemd/system/systemd-journald.service:26 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
[ OK ] Listening on initctl Compatibility Named Pipe.
[ OK ] Listening on Journal Socket (/dev/log).
[ OK ] Started Forward Password Requests to Wall Directory Watch.
[ OK ] Started Dispatch Password Requests to Console Directory Watch.
[ OK ] Reached target Slices.
…
[ OK ] Started The Apache HTTP Server.
O le mea lena, o loʻo faʻagasolo le auaunaga:
$ curl localhost
<html xml_lang="en" lang="en">
…
</html>
FAAMANATU: Aua le faʻataʻitaʻiina lenei mea ile Docker! O iina e te manaʻomia pea e te siva ma se topa e faʻalauiloa ai nei ituaiga o koneteina e ala i le daemon. (O isi fanua ma afifi o le a manaʻomia ina ia faʻaogaina uma nei mea i le Docker, pe manaʻomia le faʻaogaina i totonu o se pusa faʻapitoa. Mo faʻamatalaga, vaʻai
O nisi mea manaia e uiga ia Podman ma systemd
E sili atu le galue o Podman nai lo Docker i faila faila systemd
Afai e manaʻomia le amataina o pusa pe a faʻapipiʻi le faiga, ona mafai lea ona e faʻapipiʻi le Podman talafeagai i totonu o le faila faila systemd, lea o le a amata ai le auaunaga ma mataʻituina. E fa'aaogaina e Podman le fa'ata'ita'iga masani fork-exec. I se isi faaupuga, o koneteina gaioiga o tamaiti o le Podman process, o lea e mafai ai e le systemd ona faigofie ona mataʻituina.
E faʻaaogaina e Docker se faʻataʻitaʻiga a le tagata-server, ma e mafai foi ona tuʻu saʻo poloaiga a Docker CLI i se faila faila. Ae ui i lea, o le taimi lava e faʻafesoʻotaʻi ai le tagata Docker i le Docker daemon, o le (le kalani) e avea naʻo se isi faʻagasologa gaioiga stdin ma stdout. I le isi itu, e leai se manatu o le systemd e uiga i le fesoʻotaʻiga i le va o le Docker client ma le koneteina o loʻo i lalo o le pule a le Docker daemon, ma o le mea lea, i totonu o lenei faʻataʻitaʻiga, e le mafai e le systemd ona mataʻituina le auaunaga.
Fa'agaoioia systemd e ala i socket
E sa'o lelei le fa'agaoioia e Podman e ala i socket. Ona o le Podman e faʻaaogaina le faʻataʻitaʻiga fork-exec, e mafai ona tuʻuina atu le socket i lana koneteina tamaititi. E le mafai e Docker ona faia lenei mea ona e faʻaaogaina se faʻataʻitaʻiga-server.
O le auaunaga varlink lea e fa'aogaina e Podman e feso'ota'i ai ma tagata fa'atau mamao i koneteina o lo'o fa'agaoioia e ala i se socket. O le pusa cockpit-podman, tusia i le Node.js ma se vaega o le poloketi vaalele, e mafai ai e tagata ona fegalegaleai ma pusa Podman e ala i se upega tafaʻilagi. O le web daemon running cockpit-podman e auina atu fe'au i se varlink socket e fa'alogo ai le systemd. Systemd ona faʻagaoioia le polokalame Podman e maua ai feʻau ma amata pulea pusa. O le faʻagaoioia o le systemd i luga o se socket e faʻaumatia ai le manaʻoga mo se daemon faʻaauau pea pe a faʻaaogaina API mamao.
E le gata i lea, o loʻo matou atinaʻeina se isi tagata Podman e taʻua o le podman-remote, lea e faʻaaogaina le Podman CLI e tasi ae valaʻau varlink e faʻatautaia pusa. Podman-mamao e mafai ona tamoe i luga o SSH sauniga, e mafai ai ona e fegalegaleai saogalemu ma pusa i luga o masini eseese. I le aluga o taimi, matou te fuafua e mafai e le podman-remote ona lagolagoina MacOS ma Windows faʻatasi ma Linux, ina ia mafai e le au atinaʻe i luga o na faʻavae ona faʻatautaia se masini komepiuta Linux ma le Podman varlink o loʻo taʻavale ma maua le poto masani o koneteina o loʻo taʻavale i luga o le masini i le lotoifale.
SD_NOTIFY
O le Systemd e fa'atagaina oe e tolopo le fa'alauiloaina o ausilali fesoasoani se'ia o'o ina amata le 'au'aunaga tu'ufa'atasi latou te mana'omia. E mafai e Podman ona tu'uina atu le SD_NOTIFY socket i le 'au'aunaga tu'ufa'atasi ina ia logoina e le 'au'aunaga le systemd ua sauni e fa'atino. Ma le isi, Docker, lea e faʻaaogaina se faʻataʻitaʻiga a le tagata-server, e le mafai ona faia lenei mea.
I fuafuaga
Matou te fuafua e faʻaopoopo le poloaiga podman faʻatupuina systemd CONTAINERID, lea o le a faʻatupuina ai se faila faila systemd e pulea ai se pusa faʻapitoa ua faʻamaonia. E tatau ona aoga lenei mea i le a'a ma le leai o ni a'a mo koneteina le aoga. Ua matou vaʻai foʻi i se talosaga mo se OCI-compatible systemd-nspawn runtime.
iʻuga
O le taʻavale systemd i totonu o se koneteina o se manaʻoga malamalama. Ma faafetai ia Podman, ua iu lava ina matou maua se koneteina taimi taʻavale e le feteʻenaʻi ma systemd, ae faʻafaigofie ona faʻaoga.
puna: www.habr.com