docker - Docker删除Dangling Images命令在CoreOS systemd单位文件中不起作用

标签 docker systemd coreos

我想在CoreOS实例中作为Cron作业定期执行Docker dangling image remove命令。但是由于某些原因,尽管成功执行了systemd unit timer,但悬挂的Docker镜像不会删除。但是,仅运行命令将成功删除悬空的docker镜像。

我的服务文件(remove-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")

我的计时器文件(remove-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')"

关于docker - Docker删除Dangling Images命令在CoreOS systemd单位文件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741118/

相关文章:

linux - 仅当服务 A 存在时,Systemd 服务 B 才会在另一个服务 A 之后启动

kubernetes - 允许在Kubernetes主服务器上调度Pod吗?

docker - Docker Containers 和 Swarm 的有效监控解决方案?

server - 在 acbuild 中添加对 ACI 的本地依赖项

java - Dockerfile testcontainers 无法连接到 Ryuk

mysql - Docker服务互通问题排查

docker - 使用docker部署vue前端和.net后端,前端不解析后端容器名

Docker - 没有路由到主机

linux - systemd:当主服务崩溃时停止依赖服务

python - Python如何处理systemctl停止?