Meu palpite é que você está executando um contêiner non-privileged
. O systemd requer o recurso CAP_SYS_ADMIN, mas o Docker descarta esse recurso nos contêineres não privilegiados, para incluir mais segurança.
systemd também requer acesso RO ao sistema de arquivos cgroup dentro de um contêiner. Você pode adicioná-lo com –v /sys/fs/cgroup:/sys/fs/cgroup:ro
Então, aqui estão alguns passos sobre como executar o CentOS com o systemd dentro de um contêiner Docker:
- Puxe a imagem centos
- Configure um arquivo docker como o abaixo:
FROM centos
MAINTAINER “Yourname" <[email protected]>
ENV container docker
RUN yum -y update; yum clean all
RUN yum -y install systemd; yum clean all; \
(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/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ “/sys/fs/cgroup” ]
CMD [“/usr/sbin/init”]
- Construa-o -
docker build --rm -t centos7-systemd - < mydockerfile
-
Executar um contêiner com
docker run --privileged -ti -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup centos7-systemd /usr/sbin/init
-
Você deve ter o systemd no seu contêiner