[atomic-wg] Issue #233 `Container guidelines for systemd based containers`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



jasonbrooks added a new comment to an issue you are following:
``
I made some edits (I made them in a google doc and sent you the link if you want that):

=== systemd-Based Containers ===

A systemd-based container runs systemd(/usr/bin/init) by default as its entrypoint. One or more services are configured using unit files, the say way they would be on a physical system or a virtual machine.

systemd based containers have some advantages over running a service directly as the entrypoint (pid 1):

Support for multi service containers.
Support for unit file mechanism for starting the container.
Ability to reap zombie processes.
Population of /tmp with content needed to be run by a service
Proper handling of syslog messages
Proper handling of journalctl messages

==== Issues with systemd based containers ====

STDOUT/STDERR of the container does not come back though the container runtime logging system. systemd adds some requirements on the mechanism that containers are run:

systemd requires that a tmpfs be mounted at /run.
systemd requires that /sys/fs/cgroup be available inside of the container
systemd requires that the signal to stop the container is SIGRTMIN+3
systemd likes if /tmp is a tmpfs.

For more information on systemd in a container read this link.
https://developers.redhat.com/blog/2016/09/13/running-systemd-in-a-non-privileged-container/

==== LABELS ====

Run/Usage: Installing the oci-systemd-hook and oci-register-machine packages alongside the docker packaged shipped in Fedora takes care of most of the setup for running a systemd container. However, in order to provide compatibility with other container hosts, systemd-based containers should include a Run or Usage label that directs users to include the "--tmpfs /run", "--tmpfs /tmp", and "-v /sys/fs/cgroup:/sys/fs/cgroup" that systemd requires to run.

For example:
<pre>
LABEL Usage="docker run -d -P --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup SYSTEMDIMAGE"
</pre>

Note: On a container host without oci-systemd-hook and oci-register-machine, log files will not appear on the host, since there’ll be no way to make the logs available outside of the container.

==== CMD/ENTRYPOINT ====

systemd-based containers must include "/sbin/init" as an ENTRYPOINT or CMD, which will start systemd inside the container at run time. systemd will start up and manage services enabled with the Dockerfile using the standard "systemctl enable foo" commands in RUN statements.

For example:
<pre>
FROM fedora:25
ENV container=oci
RUN dnf -y install httpd; dnf clean all; systemctl enable httpd
STOPSIGNAL SIGRTMIN+3
EXPOSE 80
CMD [ "/sbin/init" ]
</pre>

Fedora now also provides a base-init container called fedora-init. This image is setup to running systemd containers by default. This means your Dockerfile could be as simple as

<pre>
FROM fedora-init:25
RUN dnf -y install httpd; dnf clean all; systemctl enable httpd
EXPOSE 80
</pre>

``

To reply, visit the link below or just reply to this email
https://pagure.io/atomic-wg/issue/233
_______________________________________________
cloud mailing list -- cloud@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to cloud-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Big List of Linux Books]     [Yosemite News]     [Linux Apps]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]

  Powered by Linux