Fa'asolo le systemd i totonu o se koneteina

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 Fa'agasolo faiga i totonu ole Docker Container, ma ni nai tausaga mulimuli ane - o le isi, lea na taʻua O lo'o fa'aogaina i totonu o se koneteina e le fa'apitoa, lea na ia taʻua ai e leʻi lelei tele le tulaga. Aemaise lava, na ia tusia e faapea "o le mea e leaga ai, e oo lava i le lua tausaga mulimuli ane, afai e te google "Docker system", o le mea muamua lava e sau o lana tala tuai lava lea. O lea ua oo i le taimi e sui ai se mea.” E le gata i lea, ua uma ona tatou talanoa e uiga i ai feteenaiga i le va o Docker ma systemd developers.

Fa'asolo le systemd i totonu o se koneteina

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:

  1. 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.
  2. 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.
  3. 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 Kubernetes poʻo Tatala fa'amoemoe pusa e tusi sa'o le ogalaau i stdout ma stderr. O le mea lea, afai o le a e faʻatautaia koneteina e ala i meafaigaluega faʻapipiʻi pei o mea na taʻua i luga, e tatau ona e mafaufau loloto e faʻaaoga pusa faʻavae systemd. E le gata i lea, o le au atinaʻe Docker ma Moby e masani ona tetee malosi i le faʻaogaina o le systemd i totonu o pusa.

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 lau lava afi koneteina. Sa ia maua se igoa podman ma ofoina atu le laina laina laina tutusa (CLI) e pei o Docker. Ma toetoe lava o faʻatonuga uma a Docker e mafai ona faʻaogaina i Podman i le auala lava e tasi. E masani ona matou faia semina, lea ua taʻua nei Suia le Docker i Podman, ma o le ata muamua lava e manaʻomia le tusitusi: alias docker=podman.

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 tusiga.)

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

Faaopoopo i ai se faamatalaga