|
|
@@ -42,7 +42,7 @@ By default, the CentOS containers are built using yum's `nodocs` option, which h
|
|
|
|
|
|
# Systemd integration
|
|
|
|
|
|
-Currently, systemd in CentOS 7 has been removed and replaced with a `fakesystemd` package for dependency resolution. This is due to systemd requiring the `CAP_SYS_ADMIN` capability, as well as being able to read the host's cgroups. If you wish to replace the fakesystemd package and use systemd normally, please follow the steps below.
|
|
|
+Systemd is now included in both the centos:7 and centos:latest base containers, but it is not active by default. In order to use systemd, you will need to include text similar to the example Dockerfile below:
|
|
|
|
|
|
## Dockerfile for systemd base image
|
|
|
|
|
|
@@ -50,9 +50,7 @@ Currently, systemd in CentOS 7 has been removed and replaced with a `fakesystemd
|
|
|
FROM centos:7
|
|
|
MAINTAINER "you" <[email protected]>
|
|
|
ENV container docker
|
|
|
-RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs
|
|
|
-RUN yum -y update; yum clean all; \
|
|
|
-(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i ==
|
|
|
+RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i ==
|
|
|
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
|
|
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
|
|
rm -f /etc/systemd/system/*.wants/*;\
|
|
|
@@ -65,7 +63,7 @@ VOLUME [ "/sys/fs/cgroup" ]
|
|
|
CMD ["/usr/sbin/init"]
|
|
|
```
|
|
|
|
|
|
-This Dockerfile swaps out fakesystemd for the real package, but deletes a number of unit files which might cause issues. From here, you are ready to build your base image.
|
|
|
+This Dockerfile deletes a number of unit files which might cause issues. From here, you are ready to build your base image.
|
|
|
|
|
|
```console
|
|
|
$ docker build --rm -t local/c7-systemd .
|
|
|
@@ -90,13 +88,13 @@ $ docker build --rm -t local/c7-systemd-httpd
|
|
|
|
|
|
## Running a systemd enabled app container
|
|
|
|
|
|
-In order to run a container with systemd, you will need to use the `--privileged` option mentioned earlier, as well as mounting the cgroups volumes from the host. Below is an example command that will run the systemd enabled httpd container created earlier.
|
|
|
+In order to run a container with systemd, you will need to mount the cgroups volumes from the host. Below is an example command that will run the systemd enabled httpd container created earlier.
|
|
|
|
|
|
```console
|
|
|
-$ docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd
|
|
|
+$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd
|
|
|
```
|
|
|
|
|
|
-This container is running with systemd in a limited context, but it must always be run as a privileged container with the cgroups filesystem mounted.
|
|
|
+This container is running with systemd in a limited context, with the cgroups filesystem mounted. There have been reports that if you're using an Ubuntu host, you will need to add `-v /tmp/$(mktemp -d):/run` in addition to the cgroups mount.
|
|
|
|
|
|
# Supported Docker versions
|
|
|
|