Docker 守护进程在 CoreOS 上启动时不启动

Chr*_*ris 30 boot docker coreos

我有一个 CoreOS (835.9.0) 的 vanilla 安装,它不会在启动时启动 docker 守护进程。它仅在我通过 SSH 登录并执行例如docker ps.

如何让 docker 守护进程在系统启动时自动启动?

当我说 docker 守护进程时,我的意思ps -ef | grep docker是在我执行之后才显示任何进程docker ps

Chr*_*ris 51

sudo systemctl enable docker 成功了。

  • 背景:这根本是因为docker在CoreOS上是socket激活的,也就是说它不会阻塞启动链。当磁盘上有很多容器时,早期版本的 docker 启动很慢,这会阻止依赖 docker 的所有东西快速启动,这导致了一些有趣的失败。 (7认同)
  • 善良。这让我发疯。我在任何文档中读到的任何内容都没有提到这一点。因为它,我几乎发誓放弃 CoreOS 支持 AWS AMI。(默认情况下,AWS AMI 会自动启动 Docker 守护程序)。 (6认同)
  • 这是非常重要的信息。CoreOS 文档没有提到必须启用 Docker(或任何其他容器运行时)。因为可以在裸 CoreOS 上启动 docker 容器(并且因为 CoreOS 是用来运行容器的),所以我的印象是这是默认的。当第一次更新触发的重启没有启动我的容器时,我才意识到我的错误。 (4认同)
  • 谢谢,我确实阅读了 Docker 文档,但找不到任何帮助 - 我确实找到了很多关于重启策略的信息,但当然它们只在 docker 守护进程启动后才适用。 (3认同)
  • 考虑到 CoreOS 是一个专用的 Docker 操作系统并且它在引导期间没有启动 docker,CoreOS 的这种行为非常不寻常??? (3认同)

cap*_*aig 6

这现在有点旧,但我已经开始使用 cloud-init 在所有新服务器上执行此操作。我有一个保存的 cloud-init 脚本,用于我的所有服务器。其中一部分包含:

#cloud-config
coreos:
  units:
    - name: "docker.service"
      command: "start"
      enable: true
Run Code Online (Sandbox Code Playgroud)

这将启用 docker 服务并在第一次和每次启动时启动它。