如何在docker容器内运行systemctl命令?

ofi*_*ule 9 dbus systemd docker

我想运行一个 docker 容器,它将能够systemctl在其主机上运行命令。

在这个问题之后,我没有找到适合我的解决方案。

我对 docker 基本映像没有硬性限制,因此对 ubuntu-16.04 主机使用 ubuntu-16.04 docker 映像,对 ubuntu-18.04 主机使用 ubuntu-18.04 docker 映像是完全可以接受的。

ofi*_*ule 8

经过一番调查后,我能够运行一个能够运行systemctl命令的 docker 容器。

  1. 在 ubuntu:16.04 主机上运行时,以下内容有效:

    • sudo docker run --privileged -v /run/systemd/system:/run/systemd/system -v /bin/systemctl:/bin/systemctl -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -it ubuntu:16.04 systemctl
      
      Run Code Online (Sandbox Code Playgroud)
    • sudo docker run --privileged -v /run/systemd/system:/run/systemd/system -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -it ubuntu:16.04 systemctl
      
      Run Code Online (Sandbox Code Playgroud)
  2. 在 ubuntu:18.04 主机上:

    sudo docker run --privileged -v /run/systemd/system:/run/systemd/system -v /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -it ubuntu:18.04 systemctl
    
    Run Code Online (Sandbox Code Playgroud)

    由于systemctl没有附带此图片

  • 我希望我的容器能够与其主机 systemd 通信,以便监视和启动/停止/重新启动服务,我不希望实际容器使用 systemd (4认同)