尝试添加 docker 容器时出现 SystemD 错误

SystemD error on tyring to add docker container

我正在尝试 puppetlabs docker module

我已将以下代码作为测试用例添加到我的 puppetmaster 中:

  docker::run { 'helloworld':
    image   => 'base',
    command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
  } 

在我的傀儡客户端上,我 运行 正在使用 Amazon Linux AMI。在做木偶 运行 时,我收到以下错误:

Error: /Stage[main]/Base/Docker::Run[helloworld]/Service[docker-helloworld]: Provider systemd is not functional on this host

有道理,Amazon Linux 没有 Systemd。解决这个问题的正确方法是什么?有没有办法让 docker 模块在没有 systemd 的情况下工作?

您使用的 Docker 模块似乎并不支持亚马逊 Linux,如果您查看代码 here

在亚马逊上 Linux 1,

# facter osfamily 
RedHat

因此,假设所有 Redhat linux OS 系列都使用 Systemd。

根据 this 的回答,您实际上可以在 Amazon Linux 上启用 Systemd。另一种选择是使用亚马逊 Linux 2.

否则,您将需要在 Docker 模块中明确支持 Amazon Linux 1。这可能并不难做到。您可能会发现您可以对该 params.pp 文件进行微小的更改并向上游发送 PR,或者如果您愿意,可以在本地进行分叉。