首页 > 解决方案 > 尝试添加 docker 容器时出现 SystemD 错误

问题描述

我正在尝试使用puppetlabs docker 模块

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

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

在我的 puppet 客户端上,我正在运行 Amazon Linux AMI。在进行 puppet 运行时,我收到以下错误:

错误:/Stage[main]/Base/Docker::Run[helloworld]/Service[docker-helloworld]:提供程序 systemd 在此主机上不起作用

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

标签: dockerpuppet

解决方案


如果您查看此处的代码,您使用的 Docker 模块看起来并不实际支持 Amazon Linux 。

在 Amazon Linux 1 上,

# facter osfamily 
RedHat

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

根据这个答案,您实际上可以在 Amazon Linux 上启用 Systemd。另一种选择是使用 Amazon Linux 2。

如果做不到这一点,您将需要在 Docker 模块中为 Amazon Linux 1 提供显式支持。这可能并不难做到。您可能会发现您可以对该 params.pp 文件进行微小更改并在上游发送 PR,或者如果您愿意,可以在本地分叉它。


推荐阅读