Whakahaere systemd i roto i te ipu

Kua roa matou e whai ana i te kaupapa mo te whakamahi systemd i roto i nga ipu. I te tau 2014, ka tuhia e to maatau miihini haumaru a Daniel Walsh tetahi tuhinga Ko te whakahaere i te punaha i roto i te Ipu Docker, me etahi tau i muri mai - tetahi atu, i kiia Te whakahaere i te punaha i roto i te ipu kore-mana, i kii ia kaore i tino pai ake te ahuatanga. Ina koa, i tuhia e ia "he kino, ahakoa e rua tau i muri mai, mena ka google koe "Docker system", ko te mea tuatahi ka puta ake ko tana tuhinga tawhito ano. Na kua tae ki te wa ki te whakarereke i tetahi mea." I tua atu, kua korerohia e matou he pakanga i waenga i a Docker me nga kaihanga punaha.

Whakahaere systemd i roto i te ipu

I roto i tenei tuhinga ka whakaatu tatou i nga mea kua rereke i te waa me te pehea e taea ai e Podman te awhina ia tatou i tenei take.

He maha nga take hei whakahaere i te systemd ki roto i te ipu, penei:

  1. Nga ipu maha ratonga – he maha nga tangata e hiahia ana ki te tango i a raatau tono maha-ratonga mai i nga miihini mariko ka whakahaere i roto i nga ipu. He pai ake, he pai ake te wawahi i aua tono ki roto i nga ratonga miihini, engari kaore nga tangata katoa e mohio ki te mahi i tenei, kaore ranei he wa. Na reira, ko te whakahaere i nga tono penei i nga ratonga i whakarewahia e te systemd mai i nga konae waeine he tino tika.
  2. Kōnae Waeine Systemd – Ko te nuinga o nga tono e rere ana i roto i nga ipu he mea hanga mai i te waehere i rere i mua i runga i nga miihini mariko, tinana ranei. Ko enei tono he konae wae i tuhia mo enei tono me te mohio me pehea te whakarewatanga. Na he pai ake te tiimata i nga ratonga ma te whakamahi i nga tikanga tautoko, kaua ki te tarai i to ake ratonga init.
  3. Ko te Systemd he kaiwhakahaere tukanga. He pai ake te whakahaere i nga ratonga (whakaweto, whakaara ano i nga ratonga, te patu ranei i nga tukanga zombie) pai ake i etahi atu taputapu.

E ai ki tera, he maha nga take kia kaua e whakahaere i te systemd i roto i nga ipu. Ko te mea nui ko te systemd/journald te whakahaere i te whakaputanga o nga ipu, me nga taputapu penei Kubernetes ranei hūnuku Me tumanako ka tuhia e nga ipu te raarangi ki te stdout me te stderr. No reira, mena kei te whakahaere koe i nga ipu ma nga taputapu orkestra penei i nga korero i runga ake nei, me tino whakaaro koe ki te whakamahi i nga ipu-a-systemd. Hei taapiri, ko nga kaiwhakawhanake a Docker me Moby he tino whakahē ki te whakamahi i te systemd i roto i nga ipu.

Te Haerenga mai o Podman

E harikoa ana matou ki te ripoata kua anga whakamua te ahuatanga. I whakatauhia e te roopu whakahaere ipu i Red Hat ki te whakawhanake to ake miihini ipu. He ingoa tana Pukeraki me te tuku i te atanga raina whakahau ano (CLI) me Docker. A tata katoa nga whakahau Docker ka taea te whakamahi i Podman i te huarahi ano. He maha nga wa ka whakahaerehia e matou nga huihuinga, e kiia nei inaianei Te huri i te Docker ki Podman, a ko te kiriata tuatahi me tuhi: alias docker=podman.

He maha nga tangata e mahi ana i tenei.

Kare rawa maua ko taku Podman i te whakahe ki nga ipu-a-systemd. I muri i nga mea katoa, ko te Systemd te punaha-a-roto Linux e whakamahia nuitia ana, me te kore e whakaae kia mahi tika i roto i nga ipu, ko te kore e aro ki te waia o nga mano tangata ki te whakahaere ipu.

E mohio ana a Podman ki te mahi kia pai te mahi a systemd i roto i te ipu. Kei te hiahia nga mea penei i te whakapuru tmpfs ki runga /run me /tmp. He pai ki a ia ki te whakahoe i te taiao "whakapuke" me te tumanako kia uru atu ki tana wahanga o te raarangi cgroup me te kōpaki /var/log/journald.

Ka tiimata ana koe i tetahi ipu kei roto te whakahau tuatahi he init, he systemd ranei, ka whirihora aunoa a Podman i nga tmpfs me nga Cgroups hei whakarite kia timata te punaha me te kore raru. Hei aukati i tenei aratau whakarewa aunoa, whakamahia te --systemd=false kōwhiringa. Kia mahara ko Podman anake te whakamahi i te aratau systemd ina kite ana me whakahaere he whakahau systemd, init ranei.

Anei tetahi waahanga mai i te pukapuka:

rere tangata podman
...

–systemd=pono|teka

Te whakahaere ipu i roto i te aratau systemd. Whakahohea taunoa.

Mena kei te whakahaere koe i tetahi whakahau systemd, init ranei i roto i tetahi ipu, ka whirihora e Podman nga tohu maunga tmpfs i roto i nga raarangi e whai ake nei:

/ oma, / oma/raka, /tmp, /sys/fs/cgroup/systemd, /var/lib/journal

Ko te tohu mutu taunoa ko SIGRTMIN+3.

Ko enei mea katoa ka taea e te systemd te whakahaere i roto i te ipu kati kaore he whakarereketanga.

FAKATOKANGA: ka ngana a systemd ki te tuhi ki te punaha konae cgroup. Heoi, ka aukati a SELinux i nga ipu ki te mahi i tenei ma te taunoa. Kia taea ai te tuhi, whakahohea te tawhā boolean container_manage_cgroup:

setsebool -P container_manage_cgroup pono

Inaianei tirohia te ahua o te Dockerfile mo te whakahaere i te punaha i roto i te ipu ma te whakamahi i te Podman:

# cat Dockerfile

FROM fedora

RUN dnf -y install httpd; dnf clean all; systemctl enable httpd

EXPOSE 80

CMD [ "/sbin/init" ]

Heoi ano.

Inaianei ka kohia e matou te ipu:

# podman build -t systemd .

Ka kii atu matou ki a SELinux kia whakaaetia te punaha ki te whakarereke i te whirihoranga Cgroups:

# setsebool -P container_manage_cgroup true

He maha nga tangata, i te ara, ka wareware ki tenei taahiraa. Waimarie, me mahi kotahi anake ka tiakina te tautuhinga i muri i te whakaara ano i te punaha.

Inaianei ka timata noa tatou i te ipu:

# 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.

Koia, kei te mahi te ratonga:

$ curl localhost

<html  xml_lang="en" lang="en">

…

</html>

FAKATOKANGA: Kaua e whakamatau i tenei ki Docker! I reira me kanikani tonu koe me te timipera hei whakarewa i enei momo ipu ma te daemon. (Ka hiahiatia etahi atu mara me nga putea kia pai ai enei mahi katoa i Docker, me whakahaere ranei i roto i tetahi ipu whaimana. Mo nga taipitopito, tirohia Tuhinga.)

He ruarua nga mea pai mo Podman me te systemd

He pai ake te mahi a Podman i a Docker i roto i nga konae waeine systemd

Mena me timata nga ipu i te wa e putu ana te punaha, katahi ka taea e koe te whakauru i nga whakahau Podman e tika ana ki te konae waeine systemd, ka tiimata te ratonga me te tirotiro. Ka whakamahia e Podman te tauira marau-exec paerewa. I etahi atu kupu, ko nga tukanga ipu he tamariki na te tukanga Podman, na ka taea e systemd te aroturuki i a raatau.

Ka whakamahi a Docker i tetahi tauira kaihoko-tūmau, ka taea hoki te whakatakoto tika nga whakahau a Docker CLI ki tetahi konae wae. Heoi, ka hono te kiritaki Docker ki te Docker daemon, ka noho (te kiritaki) tetahi atu tukanga tukatuka stdin me stdout. Na, kaore he mohio a systemd mo te hononga i waenga i te kaihoko Docker me te ipu e rere ana i raro i te mana o te Docker daemon, na reira, i roto i tenei tauira, kaore e taea e systemd te aro turuki i te ratonga.

Whakahohe pūnahad mā te turanga

Ka whakahaere tika a Podman i te whakahohenga ma te turanga. Na te mea ka whakamahi a Podman i te tauira marau-exec, ka taea e ia te tuku i te turanga ki ana tukanga ipu tamariki. Kaore e taea e Docker te mahi na te mea kei te whakamahi i te tauira kaihoko-tūmau.

Ko te ratonga varlink e whakamahia ana e Podman ki te korero ki nga kaihoko mamao ki nga ipu ka tino whakahohehia ma te turanga. Ko te kohinga cockpit-podman, i tuhia ki Node.js me tetahi waahanga o te kaupapa cockpit, ka taea e nga tangata te taunekeneke me nga ipu Podman ma te atanga tukutuku. Ka tuku karere te daemon tukutuku e whakahaere ana i te cockpit-podman ki te turanga varlink e whakarongo ana a systemd. Ka whakahohehia e Systemd te kaupapa Podman ki te whiwhi karere me te timata ki te whakahaere ipu. Ko te whakahohe i te punaha ki runga i te turanga ka whakakorehia te hiahia mo te daemon e rere tonu ana i te wa e whakatinana ana i nga API mamao.

I tua atu, kei te whakawhanake matou i tetahi atu kaihoko Podman e kiia nei ko te podman-mamao, e whakamahi ana i te Podman CLI engari ka karangahia te varlink hei whakahaere ipu. Ka taea e Podman-mamao te rere ki runga ake o nga huihuinga SSH, ka taea e koe te taunekeneke haumaru me nga ipu i runga i nga miihini rereke. I te roanga o te wa, ka whakamahere matou kia taea te podman-mamao ki te tautoko i a MacOS me Windows i te taha o Linux, kia taea ai e nga kaiwhakawhanake i runga i aua papaaho te whakahaere i tetahi miihini mariko Linux me te Podman varlink e rere ana me te whai wheako katoa kei te rere nga ipu ki runga i te miihini o te rohe.

SD_NOTIFY

Ka taea e te Systemd te whakaroa i te whakarewatanga o nga ratonga awhina kia timata ra ano te ratonga whakauru e hiahiatia ana e ratou. Ka taea e Podman te tuku i te turanga SD_NOTIFY ki te ratonga ipuipui kia whakamohio atu te ratonga ki te punaha kua reri ki te mahi. Ano ano, kaore e taea e Docker, e whakamahi ana i te tauira kaihoko-tūmau.

I roto i nga mahere

Ka whakamahere matou ki te taapiri i te whakahau podman whakaputa systemd CONTAINERID, ka whakaputa i te konae wae punaha hei whakahaere i tetahi ipu motuhake kua tohua. Me mahi tenei i roto i nga tikanga pakiaka me nga tikanga kore mo nga ipu kore. Kua kite ano matou i tetahi tono mo te wa whakahaere systemd-nspawn hototahi OCI.

mutunga

Ko te whakahaere i te punaha i roto i te ipu he hiahia mohio. Na te mihi ki a Podman, i te mutunga ka whai wa whakahaere ipu kaore e taupatupatu ki te systemd, engari he ngawari ki te whakamahi.

Source: will.com

Tāpiri i te kōrero