首页 > 解决方案 > 如何在服务启动时使用 puppet 配置 docker 守护进程

问题描述

我正在使用 puppet 来配置一个 docker 实例。下面是在实例上启动 docker 的代码片段。

  service { 'docker':
    ensure   => running,
    name     => 'docker',
    provider => 'systemd',
    enable   => true,
    require  => [ File['/root/.docker/config.json'], File['/etc/sysconfig/docker'], Package['docker-ce'] ]
  }

根据 docker 文档,您可以在启动 docker 守护进程时传入参数来设置不同的配置。

例如dockerd --icc=false将启动 docker 并为icc.

我知道我可以将配置更改添加到 daemon.json 文件并让 docker 选择它,但我想弄清楚如何在 puppet 代码中进行配置更改。

那么如何在启动 docker 时指定配置更改,如 --icc=false ,就像我在上面的 puppet 代码中一样?

标签: dockerconfigurationconfigpuppet

解决方案


那么如何在启动 docker 时指定配置更改,如 --icc=false ,就像我在上面的 puppet 代码中一样?

你不能。您提供的资源声明确保 Docker 守护程序正在运行,但它不直接执行dockerd,因此没有提供将参数传递给守护程序二进制文件的机制。但是,它确实通过专门管理守护进程systemd,因此您可以通过让 Puppet 管理相应的 systemd 单元文件来执行您所描述的操作,但这与管理daemon.json(通过 Puppet)并没有什么不同。

顺便说一句,通过不同的 Puppet 资源管理服务的配置(文件)和该服务的运行状态是绝对正常的。通常还管理提供服务的包,将所有这些包装到一个模块中。事实上,已经有几个预先构建的 Docker 模块可用,包括一个由 Puppet, Inc. 自己构建和维护的模块。


推荐阅读