Antworten:
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.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
Die einfachste Lösung scheint darin zu bestehen, Ihren Container mit der -v /etc/localtime:/etc/localtime:ro
Option auszuführen . So:
#run without tz info:
docker run --rm -t -i ubuntu date
Wed Apr 2 18:40:07 UTC 2014
# run with tz info:
docker run --rm -t -i -v /etc/localtime:/etc/localtime:ro ubuntu date
Wed Apr 2 11:40:29 PDT 2014
--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.
ntpd -d -q -n -p pool.ntp.org
Der Zugriff auf ein Terminal auf der VM ist jedoch eine weitere Frage, die Sie mit dem Befehl screen ausführen können.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Dieser Pfad ist ein Symlink, auf den mein System verweist /dev/ttys003
.
Beachten Sie beim Einsteigen, dass das moby login
einfach root
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.
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:
docker run --rm --privileged alpine hwclock -s
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:
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
Starten Sie dann den NTP-Dienst neu mit:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
In /etc/localtime:/etc/localtime:ro
an das volumes
Attribut.
Schauen Sie sich diesen Link an, um ein Beispiel zu demonstrieren.