Docker 删除悬挂图像命令在 CoreOS 系统单元文件中不起作用

Docker removing Dangling images command not working in CoreOS systemd unit file

我想在我的 CoreOS 实例中作为 Cron 作业定期执行 Docker 悬挂图像删除命令。但出于某种原因,尽管 systemd 单元计时器已成功执行,但悬空 docker 图像不会被删除。但是 运行 仅此命令就可以成功删除悬挂的 docker 图像。

我的服务文件(删除-docker-dangling.service)

[Unit]
Description=Removing Docker Dangling Images Cron Service
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
ExecStart=/bin/docker rmi $(docker images --quiet --filter "dangling=true")

我的定时器文件(删除-docker-dangling.timer)

[Unit]
Description=Run remove-docker-dangling.service every 30 minutes

[Timer]
OnCalendar=*:0/30

我认为罪魁祸首是 systemd 对 shell 式命令解析 (source) 的支持有限。为了执行 $(...) 部分,您需要执行 shell 中的命令:

ExecStart=/bin/sh -c "/bin/docker rmi $(docker images --quiet --filter 'dangling=true')"