ื”ืคืขืœืช systemd ื‘ืžื™ื›ืœ

ืื ื—ื ื• ืขื•ืงื‘ื™ื ืื—ืจื™ ื ื•ืฉื ื”ืฉื™ืžื•ืฉ ื‘-systemd ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ื›ื‘ืจ ื–ืžืŸ ืจื‘. ืขื•ื“ ื‘ืฉื ืช 2014, ืžื”ื ื“ืก ื”ืื‘ื˜ื—ื” ืฉืœื ื• ื“ื ื™ืืœ ื•ื•ืœืฉ ื›ืชื‘ ืžืืžืจ ื”ืคืขืœืช systemd ื‘ืชื•ืš Docker Container, ื•ื›ืขื‘ื•ืจ ื›ืžื” ืฉื ื™ื - ืื—ืจ, ืฉื ืงืจื ื”ืคืขืœืช systemd ื‘ืงื•ื ื˜ื™ื™ื ืจ ืœื ืžื•ื’ืŸ, ื‘ื• ืฆื™ื™ืŸ ื›ื™ ื”ืžืฆื‘ ืœื ื”ืฉืชืคืจ ื‘ื”ืจื‘ื”. ื‘ืžื™ื•ื—ื“ ื”ื•ื ื›ืชื‘ ื›ื™ "ืœืžืจื‘ื” ื”ืฆืขืจ, ืืคื™ืœื• ืฉื ืชื™ื™ื ืœืื—ืจ ืžื›ืŸ, ืื ืชื—ืคืฉ ื‘ื’ื•ื’ืœ "ืžืขืจื›ืช ื“ื•ืงืจ", ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืขื•ืœื” ื”ื•ื ืื•ืชื• ืžืืžืจ ื™ืฉืŸ ืฉืœื•. ืื– ื”ื’ื™ืข ื”ื–ืžืŸ ืœืฉื ื•ืช ืžืฉื”ื•". ื‘ื ื•ืกืฃ, ื›ื‘ืจ ื“ื™ื‘ืจื ื• ืขืœ ื”ืชื ื’ืฉื•ืช ื‘ื™ืŸ Docker ืœืžืคืชื—ื™ systemd.

ื”ืคืขืœืช systemd ื‘ืžื™ื›ืœ

ื‘ืžืืžืจ ื–ื” ื ืจืื” ืžื” ื”ืฉืชื ื” ืขื ื”ื–ืžืŸ ื•ื›ื™ืฆื“ ืคื•ื“ืžืŸ ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ื‘ืขื ื™ื™ืŸ ื–ื”.

ื™ืฉื ืŸ ืกื™ื‘ื•ืช ืจื‘ื•ืช ืœื”ืคืขื™ืœ systemd ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ, ื›ื’ื•ืŸ:

  1. ืžื›ื•ืœื•ืช ืžื•ืœื˜ื™ ืฉื™ืจื•ืช - ืื ืฉื™ื ืจื‘ื™ื ืจื•ืฆื™ื ืœืžืฉื•ืš ืืช ื™ื™ืฉื•ืžื™ ืจื™ื‘ื•ื™ ื”ืฉื™ืจื•ืชื™ื ืฉืœื”ื ืžืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื•ืœื”ืคืขื™ืœ ืื•ืชื ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื. ืขื“ื™ืฃ, ื›ืžื•ื‘ืŸ, ืœื—ืœืง ื™ื™ืฉื•ืžื™ื ื›ืืœื” ืœืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื, ืื‘ืœ ืœื ื›ื•ืœื ื™ื•ื“ืขื™ื ืœืขืฉื•ืช ื–ืืช ืขื“ื™ื™ืŸ ืื• ืคืฉื•ื˜ ืื™ืŸ ืœื”ื ื–ืžืŸ. ืœื›ืŸ, ื”ืคืขืœืช ื™ื™ืฉื•ืžื™ื ื›ื’ื•ืŸ ืฉื™ืจื•ืชื™ื ืฉื”ื•ืฉืงื• ืขืœ ื™ื“ื™ systemd ืžืงื•ื‘ืฆื™ ื™ื—ื™ื“ื” ื”ื™ื ื”ื’ื™ื•ื ื™ืช ืœื—ืœื•ื˜ื™ืŸ.
  2. Systemd Unit Files โ€“ ืจื•ื‘ ื”ื™ื™ืฉื•ืžื™ื ื”ืคื•ืขืœื™ื ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ื ื•ื™ื™ื ืžืงื•ื“ ืฉืจืฅ ื‘ืขื‘ืจ ืขืœ ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืื• ืคื™ื–ื™ื•ืช. ืœืืคืœื™ืงืฆื™ื•ืช ืืœื• ื™ืฉ ืงื•ื‘ืฅ ื™ื—ื™ื“ื” ืฉื ื›ืชื‘ ืขื‘ื•ืจ ืืคืœื™ืงืฆื™ื•ืช ืืœื• ื•ืžื‘ื™ืŸ ื›ื™ืฆื“ ื™ืฉ ืœื”ืคืขื™ืœ ืื•ืชืŸ. ืื– ืขื“ื™ื™ืŸ ืขื“ื™ืฃ ืœื”ืชื—ื™ืœ ืฉื™ืจื•ืชื™ื ื‘ืืžืฆืขื•ืช ืฉื™ื˜ื•ืช ื ืชืžื›ื•ืช, ื‘ืžืงื•ื ืœืคืจื•ืฅ ืœืฉื™ืจื•ืช init ืžืฉืœืš.
  3. Systemd ื”ื•ื ืžื ื”ืœ ืชื”ืœื™ื›ื™ื. ื”ื•ื ืžื‘ืฆืข ื ื™ื”ื•ืœ ืฉื™ืจื•ืช (ื›ื™ื‘ื•ื™, ื”ืคืขืœื” ืžื—ื“ืฉ ืฉืœ ืฉื™ืจื•ืชื™ื ืื• ื”ื•ืจื’ ืชื”ืœื™ื›ื™ ื–ื•ืžื‘ื™ื) ื˜ื•ื‘ ื™ื•ืชืจ ืžื›ืœ ื›ืœื™ ืื—ืจ.

ืขื ื–ืืช, ื™ืฉื ืŸ ืกื™ื‘ื•ืช ืจื‘ื•ืช ืœื ืœื”ืคืขื™ืœ systemd ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื. ื”ืขื™ืงืจื™ ืฉื‘ื”ื ื”ื•ื ืฉ-systemd/journald ืฉื•ืœื˜ ืขืœ ื”ืคืœื˜ ืฉืœ ืงื•ื ื˜ื™ื™ื ืจื™ื, ื•ื›ืœื™ื ื›ืžื• ืงื•ื‘ืจื ื˜ ืื• ื”ื™ืœื•ืš ืคืชื•ื— ืžืฆืคื™ื ืžืžื›ื•ืœื•ืช ืœื›ืชื•ื‘ ื™ื•ืžืŸ ื™ืฉื™ืจื•ืช ืœ-stdout ื•ืœ-stderr. ืœื›ืŸ, ืื ืืชื” ืžืชื›ื•ื•ืŸ ืœื ื”ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ืืžืฆืขื•ืช ื›ืœื™ ืชื–ืžื•ืจ ื›ืžื• ืืœื” ืฉื”ื•ื–ื›ืจื• ืœืขื™ืœ, ืขืœื™ืš ืœืฉืงื•ืœ ื‘ืจืฆื™ื ื•ืช ืฉื™ืžื•ืฉ ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ืžื‘ื•ืกืกื™ ืžืขืจื›ืช. ื‘ื ื•ืกืฃ, ืžืคืชื—ื™ Docker ื•-Moby ื”ืชื ื’ื“ื• ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืื•ื“ ืœืฉื™ืžื•ืฉ ื‘-systemd ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื.

ื‘ื•ืื• ืฉืœ ืคื•ื“ืžืŸ

ืื ื• ืฉืžื—ื™ื ืœื“ื•ื•ื— ืฉื”ืžืฆื‘ ืกื•ืฃ ืกื•ืฃ ื”ืชืงื“ื. ื”ืฆื•ื•ืช ื”ืื—ืจืื™ ืขืœ ื”ืคืขืœืช ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘-Red Hat ื”ื—ืœื™ื˜ ืœืคืชื— ืžื ื•ืข ืžื™ื›ืœ ืžืฉืœืš. ื™ืฉ ืœื• ืฉื ืคื•ื“ืžืŸ ื•ืžืฆื™ืข ืืช ืื•ืชื• ืžืžืฉืง ืฉื•ืจืช ืคืงื•ื“ื” (CLI) ื›ืžื• Docker. ื•ื›ืžืขื˜ ื›ืœ ืคืงื•ื“ื•ืช Docker ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘- Podman ื‘ืื•ืชื• ืื•ืคืŸ. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื ื• ืขื•ืจื›ื™ื ืกืžื™ื ืจื™ื, ืืฉืจ ื ืงืจืื™ื ื›ื™ื•ื ืฉื™ื ื•ื™ ื“ื•ืงืจ ืœืคื•ื“ืžืŸ, ื•ื”ืฉืงื•ืคื™ืช ื”ืจืืฉื•ื ื” ืงื•ืจืืช ืœื›ืชื™ื‘ื”: ื›ื™ื ื•ื™ docker=podman.

ืื ืฉื™ื ืจื‘ื™ื ืขื•ืฉื™ื ื‘ื“ื™ื•ืง ืืช ื–ื”.

Podman ืฉืœื™ ื•ืื ื™ ื‘ืฉื•ื ืื•ืคืŸ ืœื ื ื’ื“ ืงื•ื ื˜ื™ื™ื ืจื™ื ืžื‘ื•ืกืกื™ ืžืขืจื›ืช. ืื—ืจื™ ื”ื›ืœ, Systemd ื”ื™ื ืชืช-ืžืขืจื›ืช ื”-init ืฉืœ Linux ื”ื ืคื•ืฆื” ื‘ื™ื•ืชืจ, ื•ืœื ืœืืคืฉืจ ืœื” ืœืขื‘ื•ื“ ื›ืžื• ืฉืฆืจื™ืš ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ืคื™ืจื•ืฉื• ืœื”ืชืขืœื ืžื”ืื•ืคืŸ ืฉื‘ื• ืืœืคื™ ืื ืฉื™ื ืจื’ื™ืœื™ื ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื.

Podman ื™ื•ื“ืข ืžื” ืœืขืฉื•ืช ื›ื“ื™ ืœื’ืจื•ื ืœ-systemd ืœืขื‘ื•ื“ ื›ืžื• ืฉืฆืจื™ืš ื‘ืžื™ื›ืœ. ื–ื” ืฆืจื™ืš ื“ื‘ืจื™ื ื›ืžื• ื”ืจื›ื‘ื” ืฉืœ tmpfs ืขืœ /run ื•-/tmp. ื”ื™ื ืื•ื”ื‘ืช ืฉื”ืกื‘ื™ื‘ื” "ืžื›ื•ืœืœืช" ืžื•ืคืขืœืช ื•ืžืฆืคื” ืœื”ืจืฉืื•ืช ื›ืชื™ื‘ื” ืœื—ืœืง ืฉืœื” ื‘ืกืคืจื™ื™ืช cgroup ื•ืœืชื™ืงื™ื™ืช /var/log/journald.

ื›ืืฉืจ ืืชื” ืžืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ ืฉื‘ื• ื”ืคืงื•ื“ื” ื”ืจืืฉื•ื ื” ื”ื™ื init ืื• systemd, Podman ืžื’ื“ื™ืจ ืื•ื˜ื•ืžื˜ื™ืช tmpfs ื•-Cgroups ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉ-systemd ืžืชื—ื™ืœ ืœืœื ื‘ืขื™ื•ืช. ื›ื“ื™ ืœื—ืกื•ื ืืช ืžืฆื‘ ื”ื”ืฉืงื” ื”ืื•ื˜ื•ืžื˜ื™ืช ื”ื–ื”, ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช --systemd=false. ืฉื™ืžื• ืœื‘ ืฉ-Podman ืžืฉืชืžืฉ ื‘ืžืฆื‘ systemd ืจืง ื›ืืฉืจ ื”ื•ื ืจื•ืื” ืฉื”ื•ื ืฆืจื™ืš ืœื”ืคืขื™ืœ ืคืงื•ื“ืช systemd ืื• init.

ื”ื ื” ืงื˜ืข ืžื”ืžื“ืจื™ืš:

ื’ื‘ืจ ืคื•ื“ืžืŸ ืœืจื•ืฅ
...

โ€“systemd=true|false

ื”ืคืขืœืช ืงื•ื ื˜ื™ื™ื ืจ ื‘ืžืฆื‘ systemd. ืžื•ืคืขืœ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ืื ืืชื” ืžืคืขื™ืœ ืคืงื•ื“ืช systemd ืื• init ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ, Podman ื™ื’ื“ื™ืจ ื ืงื•ื“ื•ืช ื”ืจื›ื‘ื” ืฉืœ tmpfs ื‘ืกืคืจื™ื•ืช ื”ื‘ืื•ืช:

/run, /run/lock, /tmp, /sys/fs/cgroup/systemd, /var/lib/journal

ื›ืžื• ื›ืŸ, ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืื•ืช ื”ืขืฆื™ืจื” ืชื”ื™ื” SIGRTMIN+3.

ื›ืœ ื–ื” ืžืืคืฉืจ ืœ-systemd ืœืคืขื•ืœ ื‘ืžื™ื›ืœ ืกื’ื•ืจ ืœืœื ื›ืœ ืฉื™ื ื•ื™ื™ื.

ื”ืขืจื”: systemd ืžื ืกื” ืœื›ืชื•ื‘ ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื cgroup. ืขื ื–ืืช, SELinux ืžื•ื ืข ืžืžื›ื•ืœื•ืช ืœืขืฉื•ืช ื–ืืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ื›ื“ื™ ืœืืคืฉืจ ื›ืชื™ื‘ื”, ื”ืคืขืœ ืืช ื”ืคืจืžื˜ืจ ื”ื‘ื•ืœื™ืื ื™ container_manage_cgroup:

setsebool -P container_manage_cgroup true

ื›ืขืช ืชืจืื” ืื™ืš ื ืจืื” ื”-Dockerfile ืœื”ืคืขืœืช systemd ื‘ืงื•ื ื˜ื™ื™ื ืจ ื‘ืืžืฆืขื•ืช Podman:

# cat Dockerfile

FROM fedora

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

EXPOSE 80

CMD [ "/sbin/init" ]

ื–ื” ื”ื›ื•ืœ.

ื›ืขืช ืื ื• ืžืจื›ื™ื‘ื™ื ืืช ื”ืžื™ื›ืœ:

# podman build -t systemd .

ืื ื• ืื•ืžืจื™ื ืœ-SELinux ืœืืคืฉืจ ืœ-systemd ืœืฉื ื•ืช ืืช ืชืฆื•ืจืช Cgroups:

# setsebool -P container_manage_cgroup true

ืื’ื‘, ืื ืฉื™ื ืจื‘ื™ื ืฉื•ื›ื—ื™ื ืžื”ืฉืœื‘ ื”ื–ื”. ืœืžืจื‘ื” ื”ืžื–ืœ, ื–ื” ืฆืจื™ืš ืœื”ื™ืขืฉื•ืช ืจืง ืคืขื ืื—ืช ื•ื”ื”ื’ื“ืจื” ื ืฉืžืจืช ืœืื—ืจ ืืชื—ื•ืœ ื”ืžืขืจื›ืช.

ืขื›ืฉื™ื• ืื ื—ื ื• ืจืง ืžืชื—ื™ืœื™ื ืืช ื”ืžื™ื›ืœ:

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

ื–ื”ื•, ื”ืฉื™ืจื•ืช ืคื•ืขืœ:

$ curl localhost

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

โ€ฆ

</html>

ื”ืขืจื”: ืืœ ืชื ืกื” ืืช ื–ื” ื‘-Docker! ืฉื ืืชื” ืขื“ื™ื™ืŸ ืฆืจื™ืš ืœืจืงื•ื“ ืขื ื˜ืžื‘ื•ืจื™ืŸ ื›ื“ื™ ืœืฉื’ืจ ืกื•ื’ื™ื ื›ืืœื” ืฉืœ ืžื™ื›ืœื™ื ื“ืจืš ื”ื“ืžื•ืŸ. (ืฉื“ื•ืช ื•ื—ื‘ื™ืœื•ืช ื ื•ืกืคื™ื ื™ื™ื“ืจืฉื• ื›ื“ื™ ืœื’ืจื•ื ืœื›ืœ ื–ื” ืœืขื‘ื•ื“ ื‘ืฆื•ืจื” ื—ืœืงื” ื‘-Docker, ืื• ืฉื™ื”ื™ื” ืฆื•ืจืš ืœื”ืคืขื™ืœ ืื•ืชื• ื‘ืžื™ื›ืœ ืžื•ืขื“ืฃ. ืœืคืจื˜ื™ื, ืจืื” ัั‚ะฐั‚ัŒะต.)

ืขื•ื“ ื›ืžื” ื“ื‘ืจื™ื ืžื’ื ื™ื‘ื™ื ืขืœ Podman ื•-systemd

Podman ืขื•ื‘ื“ ื˜ื•ื‘ ื™ื•ืชืจ ืž-Docker ื‘ืงื‘ืฆื™ ื™ื—ื™ื“ื•ืช ืžืขืจื›ืช

ืื ืฆืจื™ืš ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื›ืฉื”ืžืขืจื›ืช ืžืืชื—ืœืช, ืื– ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื”ื›ื ื™ืก ืืช ื”ืคืงื•ื“ื•ืช ื”ืžืชืื™ืžื•ืช ืฉืœ Podman ืœืงื•ื‘ืฅ systemd unit, ืฉื™ืคืขื™ืœ ืืช ื”ืฉื™ืจื•ืช ื•ื™ื ื˜ืจ ืื•ืชื•. Podman ืžืฉืชืžืฉ ื‘ื“ื’ื fork-exec ื”ืกื˜ื ื“ืจื˜ื™. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืชื”ืœื™ื›ื™ ืžื™ื›ืœ ื”ื ื™ืœื“ื™ื ืฉืœ ืชื”ืœื™ืš Podman, ื›ืš ืฉ-systemd ื™ื›ื•ืœื” ืœื ื˜ืจ ืื•ืชื ื‘ืงืœื•ืช.

Docker ืžืฉืชืžืฉ ื‘ืžื•ื“ืœ ืฉืจืช-ืœืงื•ื—, ื•ื ื™ืชืŸ ืœืžืงื ืคืงื•ื“ื•ืช Docker CLI ื™ืฉื™ืจื•ืช ื‘ืงื•ื‘ืฅ ื™ื—ื™ื“ื”. ืขื ื–ืืช, ื‘ืจื’ืข ืฉืœืงื•ื— ื”-Docker ืžืชื—ื‘ืจ ืœื“ื™ืžื•ืŸ ื”-Docker, ื”ื•ื (ื”ืœืงื•ื—) ื”ื•ืคืš ืœืขื•ื“ ืชื”ืœื™ืš ืฉืžื˜ืคืœ ื‘-stdin ื•ื‘-stdout. ื‘ืชื•ืจื•, ืœ-systemd ืื™ืŸ ืžื•ืฉื’ ืœื’ื‘ื™ ื”ืงืฉืจ ื‘ื™ืŸ ืœืงื•ื— ื”-Docker ืœื‘ื™ืŸ ื”ืงื•ื ื˜ื™ื™ื ืจ ืฉืคื•ืขืœ ืชื—ืช ืฉืœื™ื˜ืช ื”-Docker daemon, ื•ืœื›ืŸ, ื‘ืชื•ืš ื”ืžื•ื“ืœ ื”ื–ื”, systemd ื‘ื™ืกื•ื“ื• ืœื ื™ื›ื•ืœื” ืœืคืงื— ืขืœ ื”ืฉื™ืจื•ืช.

ื”ืคืขืœืช systemd ื“ืจืš ืฉืงืข

ืคื•ื“ืžืŸ ืžื˜ืคืœ ื‘ืฆื•ืจื” ื ื›ื•ื ื” ื‘ื”ืคืขืœื” ื“ืจืš ืฉืงืข. ืžื›ื™ื•ื•ืŸ ืฉ-Podman ืžืฉืชืžืฉ ื‘ืžื•ื“ืœ fork-exec, ื”ื•ื ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืืช ื”ืฉืงืข ืœืชื”ืœื™ื›ื™ ืžื™ื›ืœ ื”ืฆืืฆื ืฉืœื•. Docker ืœื ื™ื›ื•ืœ ืœืขืฉื•ืช ื–ืืช ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืฉืชืžืฉ ื‘ืžื•ื“ืœ ืฉืจืช-ืœืงื•ื—.

ืฉื™ืจื•ืช varlink ืฉื‘ื• ืžืฉืชืžืฉ ืคื•ื“ืžืŸ ื›ื“ื™ ืœืชืงืฉืจ ืขื ืœืงื•ื—ื•ืช ืžืจื•ื—ืงื™ื ืœืžื›ื•ืœื•ืช ืžื•ืคืขืœ ืœืžืขืฉื” ื‘ืืžืฆืขื•ืช ืฉืงืข. ื—ื‘ื™ืœืช cockpit-podman, ืฉื ื›ืชื‘ื” ื‘-Node.js ื•ื—ืœืง ืžืคืจื•ื™ืงื˜ cockpit, ืžืืคืฉืจืช ืœืื ืฉื™ื ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœ Podman ื‘ืืžืฆืขื•ืช ืžืžืฉืง ืื™ื ื˜ืจื ื˜. ื“ืžื•ืŸ ื”ืื™ื ื˜ืจื ื˜ ืฉืžืคืขื™ืœ ืืช cockpit-podman ืฉื•ืœื— ื”ื•ื“ืขื•ืช ืœืฉืงืข varlink ืฉืžืขืจื›ืช ืžืื–ื™ื ื” ืœื•. ืœืื—ืจ ืžื›ืŸ Systemd ืžืคืขื™ืœื” ืืช ืชื•ื›ื ื™ืช Podman ื›ื“ื™ ืœืงื‘ืœ ื”ื•ื“ืขื•ืช ื•ืœื”ืชื—ื™ืœ ื‘ื ื™ื”ื•ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื. ื”ืคืขืœืช systemd ืžืขืœ ืฉืงืข ืžื‘ื˜ืœืช ืืช ื”ืฆื•ืจืš ื‘ื“ืžื•ืŸ ื”ืคื•ืขืœ ื›ืœ ื”ื–ืžืŸ ื‘ืขืช โ€‹โ€‹ื™ื™ืฉื•ื ืžืžืฉืงื™ API ืžืจื•ื—ืงื™ื.

ื‘ื ื•ืกืฃ, ืื ื• ืžืคืชื—ื™ื ืœืงื•ื— ื ื•ืกืฃ ืฉืœ Podman ื‘ืฉื podman-remote, ืืฉืจ ืžื™ื™ืฉื ืืช ืื•ืชื• Podman CLI ืืš ืงื•ืจื ืœ-varlink ื›ื“ื™ ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื. Podman-remote ื™ื›ื•ืœ ืœืคืขื•ืœ ืขืœ ื’ื‘ื™ ื”ืคืขืœื•ืช SSH, ืžื” ืฉืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืื™ื ื˜ืจืืงืฆื™ื” ืžืื•ื‘ื˜ื—ืช ืขื ืžื™ื›ืœื™ื ื‘ืžื›ื•ื ื•ืช ืฉื•ื ื•ืช. ืขื ื”ื–ืžืŸ, ืื ื• ืžืชื›ื ื ื™ื ืœืืคืฉืจ ืœ-podman-remote ืœืชืžื•ืš ื‘-MacOS ื•-Windows ืœืฆื“ ืœื™ื ื•ืงืก, ื›ืš ืฉืžืคืชื—ื™ื ื‘ืคืœื˜ืคื•ืจืžื•ืช ืืœื• ื™ื•ื›ืœื• ืœื”ืจื™ืฅ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืฉืœ ืœื™ื ื•ืงืก ืขื Podman varlink ืคื•ืขืœืช ื•ืœื”ืชื ืกื•ืช ื‘ื—ื•ื•ื™ื” ื”ืžืœืื” ืฉืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื”ืคื•ืขืœื™ื ืขืœ ื”ืžื—ืฉื‘ ื”ืžืงื•ืžื™.

SD_NOTIFY

Systemd ืžืืคืฉืจืช ืœื“ื—ื•ืช ืืช ื”ืฉืงืช ืฉื™ืจื•ืชื™ ื”ืขื–ืจ ืขื“ ืœืชื—ื™ืœืช ื”ืฉื™ืจื•ืช ื”ืžื›ื•ืœื•ืช ืฉื”ื ื“ื•ืจืฉื™ื. Podman ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืืช ืฉืงืข SD_NOTIFY ืœืฉื™ืจื•ืช ื”ืžื›ื•ืœื”, ื›ืš ืฉื”ืฉื™ืจื•ืช ื™ื•ื“ื™ืข ืœ-systemd ืฉื”ื•ื ืžื•ื›ืŸ ืœืคืขื•ืœื”. ื•ืฉื•ื‘, Docker, ืฉืžืฉืชืžืฉ ื‘ืžื•ื“ืœ ืฉืจืช-ืœืงื•ื—, ืœื ื™ื›ื•ืœ ืœืขืฉื•ืช ื–ืืช.

ื‘ืชื•ื›ื ื™ื•ืช

ืื ื• ืžืชื›ื ื ื™ื ืœื”ื•ืกื™ืฃ ืืช ื”ืคืงื•ื“ื” podman generate systemd CONTAINERID, ืฉืชื™ืฆื•ืจ ืงื•ื‘ืฅ systemd unit ืœื ื™ื”ื•ืœ ืงื•ื ื˜ื™ื™ื ืจ ืกืคืฆื™ืคื™ ืฉืฆื•ื™ืŸ. ื–ื” ืืžื•ืจ ืœืขื‘ื•ื“ ื”ืŸ ื‘ืžืฆื‘ ืฉื•ืจืฉ ื•ื”ืŸ ื‘ืžืฆื‘ ื—ืกืจ ืฉื•ืจืฉ ืขื‘ื•ืจ ืงื•ื ื˜ื™ื™ื ืจื™ื ืœื ืžื•ืจืฉื™ื. ืืคื™ืœื• ืจืื™ื ื• ื‘ืงืฉื” ืœื–ืžืŸ ืจื™ืฆื” ืชื•ืื OCI systemd-nspawn.

ืžืกืงื ื”

ื”ืคืขืœืช systemd ื‘ืงื•ื ื˜ื™ื™ื ืจ ื”ื™ื ืฆื•ืจืš ืžื•ื‘ืŸ. ื•ื‘ื–ื›ื•ืช Podman, ืกื•ืฃ ืกื•ืฃ ื™ืฉ ืœื ื• ื–ืžืŸ ืจื™ืฆื” ืฉืœ ืžื™ื›ืœ ืฉืื™ื ื• ืžืชื ื’ืฉ ืขื systemd, ืื‘ืœ ืžืงืœ ืขืœ ื”ืฉื™ืžื•ืฉ ื‘ื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”