docker - 尝试添加 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 的情况下工作?
解决方案
如果您查看此处的代码,您使用的 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,或者如果您愿意,可以在本地分叉它。
推荐阅读
- collections - 在过滤一些键时将 HashMap 转换为 IntArray
- ruby - 如何在 ruby 中使用 or(||) 运算符连接整数数组?
- docker - 在 Kubernetes 部署中指定镜像必须以交互模式运行
- android - 任务 ':app:transformClassesWithAndroidGradleClassShrinkerForDebug' 执行失败
- c++ - 调整向量大小以检索值,这是正确的还是在任何情况下都可能导致段错误?
- python - 如何在 Pandas 中创建新列,条件是按另一列的值重复?
- google-cloud-platform - 升级计算引擎实例上的操作系统
- apache - 启动 apache 时出错(版本为 2.4.33)
- java - 模拟 RestTemplate.exchange() 给出的 URI 不是绝对的例外
- r - R数据框中的条件填充值