【问题标题】:Docker System has not been booted with systemd as init systemDocker 系统尚未使用 systemd 作为 init 系统启动
【发布时间】:2020-04-15 09:18:03
【问题描述】:

我的 Docker 容器上运行了一个 Ubuntu 18.04 映像。我登录并安装了 Openresty。还安装了 systemd。当我使用命令“systemctl”时出现此错误:

System has not been booted with systemd as init system (PID 1). Can't operate.

我该如何解决?

【问题讨论】:

标签: docker ubuntu systemd


【解决方案1】:

谢谢鲁纳克。这对我有用

docker run -itd --privileged centos /usr/sbin/init

【讨论】:

  • 对 Rounak 的回答的一个很好的评论,但它本身并不是一个答案
  • st.huber,如果可以的话,我会评论答案,但这阻止了我-“你必须有 50 声望才能评论”
【解决方案2】:

试试sudo service ssh start 并关注兔子。

【讨论】:

    【解决方案3】:

    您需要通过此命令启动容器以启用 systemd。

    $ docker run -itd --privileged docker pull ubuntu:18.04 /usr/sbin/init
    

    【讨论】:

      【解决方案4】:

      如果我理解 OP,他正在尝试在容器中运行 systemctl within。这不起作用,因为 systemd 一开始就没有在容器中运行。它不能在非特权容器中完成。 SO中还有一个关于why he should not run systemd within a container的问题。

      我很快在谷歌上搜索并找到了这个 2014 年关于 using systemd within a container in docker 的页面,其中有一个简短的解释。解决方法是使用特权容器(运行 docker run --privileged ...),这可以说是一个坏主意,但可能适合 OP。有一个 2019 年的update of that last article,底线是他们开发了自己的容器引擎(所以没有 docker)。

      显而易见的解决方案是使用单一服务,因此不需要 systemd,尽管在 OP 的情况下这可能是不可能的。

      总之,可能的解决方案:

      • 不要使用 systemd
      • 使用特权容器
      • 不要使用 docker

      【讨论】:

        【解决方案5】:

        在终端中,您可以输入:

        $ sudo dockerd
        

        奇迹发生了

        所以,打开其他终端试试

        $ docker ps -a
        

        如果您仍然有权限问题,请运行:

        $ sudo usermod -aG docker your-user
        

        【讨论】:

        • 工作就像一个魅力
        【解决方案6】:

        您是否尝试使用:sudo /etc/init.d/docker start 而不是 systemd?

        我有一个类似的问题,它解决了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-25
          • 1970-01-01
          • 1970-01-01
          • 2021-04-06
          • 2019-02-11
          • 1970-01-01
          • 2021-04-16
          • 2021-03-01
          相关资源
          最近更新 更多