测试Ansible角色时,我的systemd服务无法启动。这是我得到的错误,
任务[memcached:包礼物] ******************************************* *已更改:[localhost] => (…
事实证明,这个问题与如何实现entrycommands有关,如果你覆盖它没有像预期那样初始化的命令。因此,解决方法是启动容器,分离,然后将命令发送到正在运行的容器。
--- pipeline: system: image: cyberpunkspike/docker-centos7-ansible:latest labels: com.amtrustna.it.infr.serv.system: "true" cap_add: - SYS_ADMIN volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro init: /usr/lib/systemd/systemd detach: true exec: image: docker volumes: - /var/run/docker.sock:/var/run/docker.sock commands: - CONTAINER_ID="$(docker ps -qf "label=com.amtrustna.it.infr.serv.system")" - test -n "$CONTAINER_ID" || { echo "Container Not Found"; exit 1 ;} - docker exec -t "$CONTAINER_ID" sh -c "export TERM=xterm-256color; cd $PWD && tox"
添加只读权限 /sys/fs/cgroup 到你的 volumes 部分: - /sys/fs/cgroup:/sys/fs/cgroup:ro
/sys/fs/cgroup
volumes
- /sys/fs/cgroup:/sys/fs/cgroup:ro
完整的解释 这里 。
有时您可以通过替换init-command来删除整个特权/系统内容 systemctl.py 。它甚至可以为您提供不同的错误诊断。