Ich habe die Zeitzone des Docker-Containers bereits korrekt geändert. Muss ich einen NTP-Server im Docker-Container installieren, um die Zeit regelmäßig zu synchronisieren, oder synchronisiert der Container die Zeit von seinem Host-Computer?
Wenn Sie unter OSX boot2docker ausführen, sehen Sie dieses Problem: https://github.com/boot2docker/boot2docker/issues/290
Die Zeitsynchronisierung wird zu einem Problem, da der Boot2docker-Host seine Zeitverschiebung aufweist, während Ihr Betriebssystem schläft. Die Zeitsynchronisierung mit Ihrem Docker-Container kann nicht durch Ausführen Ihres Containers mit aufgelöst werden-v /etc/localtime:/etc/localtime:ro
Stattdessen müssen Sie dies vorerst regelmäßig unter OSX ausführen:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Update für Benutzer von Kitematic
Wenn Sie Kitematic ausführen , das jetzt der vorgeschlagene Mechanismus zum Starten und Ausführen unter Docker in OSX ist, müssen Sie diesen Befehl regelmäßig ausführen:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
Oder für ältere Docker-Versionen
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Update für Benutzer des neuen nativen Docker für OSX
Die neue Docker Beta macht VirtualBox und Docker Machine überflüssig. Die neuesten Docker-Builds (derzeit 1.12.1-beta25 (Build: 11807)) scheinen die Fähigkeit zu haben, zu erkennen, wann eine Zeitdiskontinuität aufgetreten ist, und sie entsprechend anzupassen. Somit sollte dies kein Problem mehr sein ... Hurra !!
https://github.com/sameersbn/docker-gitlab/issues/77
Siehe die Antwort von sameersbn.
quelle
Die einfachste Lösung scheint darin zu bestehen, Ihren Container mit der
-v /etc/localtime:/etc/localtime:ro
Option auszuführen . So:quelle
--privileged
Modus ausgeführt wird).date
auf dem Host-Computer in mein MWE aufnehmen sollen, da es ansonsten vielleicht unklar ist, ob der Container seine Zeit vom Host erhält.setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
Unter Docker für Mac OS X Beta habe ich auf der VM, die auf Alpine Linux basiert, erhebliche Abweichungen festgestellt. In den häufig gestellten Fragen zu Alpine Linux können Sie die Uhr der VM mit dem folgenden Befehl synchronisieren.
Der Zugriff auf ein Terminal auf der VM ist jedoch eine weitere Frage, die Sie mit dem Befehl screen ausführen können.
Dieser Pfad ist ein Symlink, auf den mein System verweist
/dev/ttys003
.Beachten Sie beim Einsteigen, dass das
moby login
einfachroot
kein Passwort hat. Nachdem Sie fertig sind, wird STRG-A, D von der Bildschirmsitzung getrennt.HINWEIS: Früher wurde dies in Docker für die Fehlerbehebung für Mac dokumentiert, aber das scheint behoben worden zu sein. Ich hatte das Glück, es auf der Dockercon 2016 zu sehen. Es scheint, dass Docker versucht, die VM vollständig aus der Erfahrung heraus zu abstrahieren, was erklärt, warum sie nicht mehr dokumentiert ist.
quelle
Die aktuelle Lösung für die Osx-Zeitdrift auf Docker (April 2018):
Ich habe meinen Mac auf einem NTP-Server, aber diese feste Taktverschiebung mit Containern:
Von https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Wenn Ihr System keinen Zugriff auf einen NTP-Server hat, ist die von Docker für Mac angezeigte Zeit nach einem Ruhezustand möglicherweise nicht mehr mit dem Host synchron. Darüber hinaus kann die Zeit während des Gebrauchs langsam nicht mehr synchron sein. Führen Sie Folgendes aus, um die Zeit nach dem Ruhezustand manuell zurückzusetzen:
Um beide Probleme zu beheben, können Sie die lokale Uhr als Fallback-NTP-Zeitquelle mit niedriger Priorität (hohe Schicht) für den Host hinzufügen. Bearbeiten Sie dazu die Datei /etc/ntp-restrict.conf des Hosts, um Folgendes hinzuzufügen:
Starten Sie dann den NTP-Dienst neu mit:
quelle
Docker-Compose-Verwendung:
In
/etc/localtime:/etc/localtime:ro
an dasvolumes
Attribut.Schauen Sie sich diesen Link an, um ein Beispiel zu demonstrieren.
quelle