2017-10-14 6 views
1

Je souhaite exécuter périodiquement la commande Docker dangling image remove en tant que tâche Cron dans mon instance CoreOS. Mais pour une raison quelconque, bien que la minuterie de l'unité systemd ait été exécutée avec succès, les images docker pendantes ne seront pas supprimées. Mais exécuter la commande seule supprimerait les images docker pendantes avec succès.Docker remove La commande Dangling images ne fonctionne pas dans le fichier unité CoreOS systemd

Mon dossier Service (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") 

Mon minuteur Fichier (remove-docker-dangling.timer)

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

[Timer] 
OnCalendar=*:0/30 
+1

1) Celui-ci appartient à ServerFault ou SuperUser, non StackOverflow. Bon à savoir pour la prochaine fois. –

+1

2) Avez-vous essayé de collecter la sortie de 'journalctl -xe' et' systemctl status remove-docker-dangling'? –

+1

L'état de @DerekBrown systemctl montre Son sain et actif! –

Répondre

1

Je pense que la principale coupable est que systemd a un soutien limité pour l'analyse de commande de style shell (source). Pour la partie $(...) à exécuter, vous devez exécuter la commande en shell:

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

Votre réponse a résolu mon problème! Merci pour la source aussi. –