Para depurar por que problema ocorre o seguinte comando é executado em um contêiner:
docker run -it <dockerImageName> dmesg
resultado:
dmesg: read kernel buffer failed: Permission denied
Tentativa
- Execucao
docker run -it <dockerImageName> sudo dmesg
retorna o mesmo problema
como Michael Hampton mencionado, os contêineres devem executar apenas um único serviço atômico. Na verdade, deve-se entender que os contêineres não são máquinas virtuais, mas um único processo por si só em seu localhost.
No entanto, eu soube que, é um pouco mais difícil fazer o SystemD funcionar dentro de um contêiner de aqui
Consegui fazer o SystemD funcionar dentro de uma imagem construída a partir do centos: centos7 com:
docker run --privileged -ti -e "container=docker" -v /sys/fs/cgroup:/sys/fs/cgroup trinitronx/ansible-base:stable-centos7 /usr/sbin/init
Por algum motivo não documentado, a variável container=docker é aparentemente necessária. / sys / fs / cgroup também é necessário, pois SystemD precisa de cgroups para funcionar corretamente de acordo com RedHat Bug 1033604.
Depois de fazer isso, tente fazer login no contêiner usando docker exec -it <container> /bin/bash
e então você poderia executar o seu systemctl
comando.
Você não tem permissão para fazer isso em um contêiner. Qual é o propósito disso?