docker - 厨房-Docker 和 Systemd

标签 docker chef-infra systemd test-kitchen

我目前正在使用 kitchen-docker 驱动程序来运行我的测试厨房,以加快我们的自动化 Recipe 测试速度。

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

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

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

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

最佳答案

由于我还没有迁移到 kitchen-dokken,这里是我用来在 kitchen-docker 中启用 systemd 的配置:

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

警告:我假设您熟悉赋予容器 SYS_ADMIN 功能的含义(相当于主机系统上的 root,请阅读 more)。

关于docker - 厨房-Docker 和 Systemd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42852457/

相关文章:

docker - 带有docker的Elasticsearch应用程序可在多节点集群上运行

ruby - Chef Recipe 错误 : Error Resolving Cookbooks for Run List

chef-infra - Rundeck 和 Chef

chef-infra - Chef中的执行顺序

java - 将 Spring Boot 应用程序作为 systemd 服务运行时未创建 pid 文件

docker - 使用主机名而不是 localhost 访问 docker 容器

docker - 启动运行docker镜像时如何设置运行bash文件

docker - 缓存 GitLab CI 构建阶段之间的依赖关系

bash - 如何为systemd服务的进程加载环境变量?

systemd - 如何让 systemd 杀死或停止重新生成 rsyslog 守护进程