我目前正在使用kitchen-docker
驱动程序来运行我的test kitchen
,以加快我们的自动化菜谱测试速度。
但是,玩了一段时间后,我发现如果任何食谱中都包含service
资源,则每次厨房运行都会失败,如果我尝试停止/启动/重新启动服务,则该操作在容器内是不允许的,并且运行失败。
如果我使用kitchen login
进入容器,每次尝试使用systemctl
...时,我都会收到以下错误消息:
[kitchen@17c054a76e8f ~]$ sudo systemctl restart foo
Failed to get D-Bus connection: Operation not permitted
有没有什么办法解决这一问题?我目前正在使用
privileged: true
中的.kitchen.yml
选项运行此图像。 最佳答案
由于我还没有转移到kitchen-dokken,这是我用来在kitchen-docker内部启用systemd的配置:
driver:
name: docker
run_command: /bin/systemd
cap_add:
- SYS_ADMIN
volume:
- /sys/fs/cgroup
警告:我假设您熟悉赋予容器
SYS_ADMIN
功能的含义(在主机系统上等效于根,请阅读more)。关于docker - Kitchen-Docker和Systemd,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42852457/