ich eine einfache Dockerfile haben alsCron-Job läuft nicht in Docker-Container auf ubuntu
FROM ubuntu:latest
ADD crontab /etc/cron.d/test-cron
RUN chmod a+x /etc/cron.d/test-cron
RUN touch /var/log/cron.log
CMD cron && tail -f /var/log/cron.log
folgt und der Gehalt an crontab
Datei ist so einfach wie
* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
# empty line
Als ich das laufen auf meinem lokalen OS X-Maschine (mit Docker-Maschine läuft), es funktioniert gut ("Hallo Welt" wird gedruckt, um jede Minute eine Datei zu protokollieren). Wenn ich jedoch versuche, es auf einem Ubuntu-Computer auszuführen, wird der Cron-Job nicht ausgeführt (leere Protokolldatei).
Hier ist der Befehl, den ich verwende, um die Container
docker build -t crontest .
docker run --name cron crontest
Ich bin nicht sicher ausgeführt werden, warum dies der Fall wäre. Ich frage mich, ob etwas mit der Ubuntu-Box, die ich habe, nicht stimmt (falsche Zeiteinstellung?). Ich habe versucht, diese Maschine ohne Erfolg neu zu starten. Ich habe derzeit andere Docker-Container auf der Ubuntu-Box laufen und sie laufen gut.
Jeder Vorschlag, was ich tun könnte, um dies zu debuggen/beheben würde sehr geschätzt werden.
EDIT:
im Inneren des Behälters Nachdem man (docker exec -it cron /bin/bash
), kann ich, dass cron überprüfen läuft es:
[email protected]:/# ps -ef | grep cron
root 1 0 0 20:15 ? 00:00:00 /bin/sh -c cron && tail -f /var/log/cron.log
root 6 1 0 20:15 ? 00:00:00 cron
root 7 1 0 20:15 ? 00:00:00 tail -f /var/log/cron.log
root 25 11 0 20:21 ? 00:00:00 grep --color=auto cron
Ich stimme zu, diese Frage als Off-Topic zu schließen, weil sie auf AskUbuntu gehört. –
@TinyGiant Ich kann verstehen, woher du kommst, aber ich denke, das ist immer noch eine gültige Frage, da es auch Docker betrifft. –
@TriNguyen Hast du das jemals herausgefunden? Ich habe das gleiche Problem und hoffte, eine lange Protokolluntersuchung zu vermeiden, wenn Sie eine Lösung gefunden haben! –