【问题标题】:Kitchen-Docker and SystemdKitchen-Docker 和 Systemd
【发布时间】:2017-03-17 18:14:19
【问题描述】:

我目前正在为我的test kitchen 运行使用kitchen-docker 驱动程序,以加快我们的自动化食谱测试。

但是在玩了一段时间之后,我发现如果任何配方中涉及service 资源,则每次厨房运行都会失败,如果我尝试停止/启动/重新启动服务,则容器内不允许这样做并且运行失败。

如果我使用 kitchen login 进入容器,每次我尝试使用 systemctl... 我都会收到以下错误消息:

[kitchen@17c054a76e8f ~]$ sudo systemctl restart foo
Failed to get D-Bus connection: Operation not permitted

有没有办法解决这个问题?我目前正在使用.kitchen.yml 中的选项privileged: true 运行此图像。

【问题讨论】:

  • 这是许多原因之一,即使作为 kitchen-docker 的维护者,我还是建议大多数人使用 dokken。
  • Soon® 是否有计划随时解决此问题,还是我应该跳入 Kitchen-Dokken 并且永不回头?
  • 我的意思是它本身不是要修复的,只是 dokken 更适合这个模型。
  • 有一些示例说明如何配置 Docker 以在容器内运行 systemd,驱动程序既不帮助也不阻碍 :) 只是 Docker 的原始不愉快。
  • 是的...我让 systemd 服务与 dokken 一起工作,但现在像 hostnamectl 这样的东西在容器内调用时会使我的整个系统崩溃。这里面有太多的痛苦。 :(

标签: docker chef-infra systemd test-kitchen


【解决方案1】:

因为我还没有迁移到 kitchen-dokken,所以这里是我用来在 kitchen-docker 中启用 systemd 的配置

driver:
  name: docker
  run_command: /bin/systemd
  cap_add:
    - SYS_ADMIN
  volume:
    - /sys/fs/cgroup

警告:我假设您熟悉为容器提供SYS_ADMIN 功能的含义(主机系统上的root 等效项,请阅读more)。

【讨论】:

  • 好主意!但是,我不认为我应该在许多人将使用代理来测试食谱的环境中使用这种方法……但仍然非常适合个人使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2016-06-09
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 2017-08-16
相关资源
最近更新 更多