ืื ืื ื ืขืืงืืื ืืืจื ื ืืฉื ืืฉืืืืฉ ื-systemd ืืงืื ืืืื ืจืื ืืืจ ืืื ืจื. ืขืื ืืฉื ืช 2014, ืืื ืืก ืืืืืื ืฉืื ื ืื ืืื ืืืืฉ ืืชื ืืืืจ
ืืืืืจ ืื ื ืจืื ืื ืืฉืชื ื ืขื ืืืื ืืืืฆื ืคืืืื ืืืื ืืขืืืจ ืื ื ืืขื ืืื ืื.
ืืฉื ื ืกืืืืช ืจืืืช ืืืคืขืื systemd ืืชืื ืงืื ืืืื ืจ, ืืืื:
- ืืืืืืช ืืืืื ืฉืืจืืช - ืื ืฉืื ืจืืื ืจืืฆืื ืืืฉืื ืืช ืืืฉืืื ืจืืืื ืืฉืืจืืชืื ืฉืืื ืืืืื ืืช ืืืจืืืืืืืช ืืืืคืขืื ืืืชื ืืงืื ืืืื ืจืื. ืขืืืฃ, ืืืืื, ืืืืง ืืืฉืืืื ืืืื ืืืืงืจื-ืฉืืจืืชืื, ืืื ืื ืืืื ืืืืขืื ืืขืฉืืช ืืืช ืขืืืื ืื ืคืฉืื ืืื ืืื ืืื. ืืื, ืืคืขืืช ืืืฉืืืื ืืืื ืฉืืจืืชืื ืฉืืืฉืงื ืขื ืืื systemd ืืงืืืฆื ืืืืื ืืื ืืืืื ืืช ืืืืืืื.
- Systemd Unit Files โ ืจืื ืืืืฉืืืื ืืคืืขืืื ืืชืื ืงืื ืืืื ืจืื ืื ืืืื ืืงืื ืฉืจืฅ ืืขืืจ ืขื ืืืื ืืช ืืืจืืืืืืืช ืื ืคืืืืืช. ืืืคืืืงืฆืืืช ืืื ืืฉ ืงืืืฅ ืืืืื ืฉื ืืชื ืขืืืจ ืืคืืืงืฆืืืช ืืื ืืืืื ืืืฆื ืืฉ ืืืคืขืื ืืืชื. ืื ืขืืืื ืขืืืฃ ืืืชืืื ืฉืืจืืชืื ืืืืฆืขืืช ืฉืืืืช ื ืชืืืืช, ืืืงืื ืืคืจืืฅ ืืฉืืจืืช init ืืฉืื.
- Systemd ืืื ืื ืื ืชืืืืืื. ืืื ืืืฆืข ื ืืืื ืฉืืจืืช (ืืืืื, ืืคืขืื ืืืืฉ ืฉื ืฉืืจืืชืื ืื ืืืจื ืชืืืืื ืืืืืื) ืืื ืืืชืจ ืืื ืืื ืืืจ.
ืขื ืืืช, ืืฉื ื ืกืืืืช ืจืืืช ืื ืืืคืขืื systemd ืืงืื ืืืื ืจืื. ืืขืืงืจื ืฉืืื ืืื ืฉ-systemd/journald ืฉืืื ืขื ืืคืื ืฉื ืงืื ืืืื ืจืื, ืืืืื ืืื
ืืืื ืฉื ืคืืืื
ืื ื ืฉืืืื ืืืืื ืฉืืืฆื ืกืืฃ ืกืืฃ ืืชืงืื. ืืฆืืืช ืืืืจืื ืขื ืืคืขืืช ืืงืื ืืืื ืจืื ื-Red Hat ืืืืื ืืคืชื
ืื ืฉืื ืจืืื ืขืืฉืื ืืืืืง ืืช ืื.
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