首页 > 解决方案 > “尾随垃圾,无视。” Docker 在 vagrant virtualbox 上的 centos 中使用 puppet 时出错

问题描述

当我尝试使用 puppet docker 模块在 Centos 7 上安装 docker 时,使用这个 puppet 模块 https://forge.puppet.com/puppetlabs/docker

  # Install Docker
  class { 'docker':
    version => '18.06.1.ce-3.el7',
  }

我正在使用 vagrant、virutalbox 和以下 centos 盒子

   config.vm.box = "geerlingguy/centos7"
   config.vm.box_version = "1.2.15"

第一次运行良好,但再次在配置箱上

$ vagrant provsion --color

收到此错误任何想法我该如何解决?

==> default: Info: /Stage[main]/Docker::Service/Exec[docker-systemd-reload-before-service]: Scheduling refresh of Service[docker]
==> default: Error: Systemd start for docker failed!
==> default: journalctl log for docker:
==> default: -- Logs begin at Mon 2019-10-14 15:41:55 NZDT, end at Mon 2019-10-14 15:43:14 NZDT. --
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default:
==> default: Error: /Stage[main]/Docker::Service/Service[docker]/ensure: change from 'stopped' to 'running' failed: Systemd start for docker failed!
==> default: journalctl log for docker:
==> default: -- Logs begin at Mon 2019-10-14 15:41:55 NZDT, end at Mon 2019-10-14 15:43:14 NZDT. --
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
==> default: Oct 14 15:43:14 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
==> default:
==> default: Notice: /Stage[main]/Docker::Service/Service[docker]: Triggered 'refresh' from 1 event

有与类似问题相关的不同链接,但没有一个与此错误真正相关 https://github.com/docker/for-linux/issues/162

https://github.com/moby/moby/issues/34091

https://github.com/coreos/fleet/issues/992

更新

[vagrant@docker ~]$ sudo systemctl daemon-reload
[vagrant@docker ~]$ sudo systemctl start docker
Failed to start docker.service: Unit is not loaded properly: Invalid argument.
See system logs and 'systemctl status docker.service' for details.
[vagrant@docker ~]$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: error (Reason: Invalid argument)
  Drop-In: /etc/systemd/system/docker.service.d
           └─service-overrides.conf
   Active: inactive (dead)
     Docs: https://docs.docker.com

Oct 16 11:54:25 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
Oct 16 11:57:05 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
Oct 16 11:57:05 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
Oct 16 11:57:05 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
Oct 16 11:57:21 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
Oct 16 11:57:21 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
Oct 16 11:57:21 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
Oct 16 11:57:32 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:6] Trailing garbage, ignoring.
Oct 16 11:57:32 docker systemd[1]: [/etc/systemd/system/docker.service.d/service-overrides.conf:7] Missing '='.
Oct 16 11:57:32 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.
[vagrant@docker ~]$ 

标签: dockercentosvagrantpuppet

解决方案


根据您的错误消息

==> default: Oct 14 15:43:14 docker systemd[1]: docker.service lacks both ExecStart= and ExecStop= setting. Refusing.

您的 docker.service 文件似乎缺少几行对于运行和控制服务至关重要的行。

您可以在此处查看 docker 的工作示例:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service
Wants=network-online.target
Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd://
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

https://github.com/moby/moby/blob/master/contrib/init/systemd/docker.service

您可以通过以下方式确定您的服务文件在给定系统上的位置

sudo systemctl status docker
    docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)

正如您在上面的示例中看到的,服务文件位于/usr/lib/systemd/system/docker.service.


推荐阅读