Réponses:
Si vous êtes sur OSX exécutant boot2docker, consultez ce problème: https://github.com/boot2docker/boot2docker/issues/290
La synchronisation de l'heure devient un problème car l'hôte boot2docker a sa dérive temporelle pendant que votre système d'exploitation est en veille. La synchronisation de l'heure avec votre conteneur Docker ne peut pas être résolue en exécutant votre conteneur avec-v /etc/localtime:/etc/localtime:ro
Au lieu de cela, pour l'instant, vous devez l'exécuter périodiquement sur OSX:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Mise à jour pour les utilisateurs de Kitematic
Si vous exécutez Kitematic , qui est maintenant le mécanisme suggéré pour être opérationnel sur Docker sous OSX, vous devrez exécuter périodiquement cette commande:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
Ou, pour les anciennes versions de docker
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Mise à jour pour les utilisateurs du nouveau Docker natif pour OSX
La nouvelle version bêta de Docker supprime VirtualBox et Docker Machine. Les dernières versions de docker (actuellement, 1.12.1-beta25 (build: 11807)) semblent avoir la capacité de détecter quand il y a eu une discontinuité temporelle et de s'ajuster en conséquence. Ainsi, cela ne devrait plus être un problème ... Hourra !!
https://github.com/sameersbn/docker-gitlab/issues/77
Voir la réponse de sameersbn.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
La solution la plus simple semble être d'exécuter votre conteneur avec l' -v /etc/localtime:/etc/localtime:ro
option. Donc:
#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
mode).
date
sur la machine hôte dans mon MWE, car il n'est peut-être pas clair autrement que le conteneur obtient son heure de l'hôte.
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
Sur Docker pour Mac OS X Beta, j'ai constaté une dérive importante sur la VM, qui est basée sur Alpine Linux. À partir de la FAQ Alpine Linux, vous pouvez synchroniser l'horloge de la machine virtuelle avec la commande suivante.
ntpd -d -q -n -p pool.ntp.org
Cependant, accéder à un terminal sur la machine virtuelle est une autre question, qui peut être effectuée si vous utilisez la commande screen.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Ce chemin est un lien symbolique vers lequel pointe sur mon système /dev/ttys003
.
Une fois que vous êtes entré, notez que le moby login
est simplement root
sans mot de passe. Une fois que vous avez terminé, CTRL-A, D se déconnectera de la session d'écran.
REMARQUE: cela était documenté sur le dépannage de Docker pour Mac, mais cela semble avoir été supprimé. J'ai eu la chance de le voir lors de Dockercon 2016. Il semble que Docker tente d'abstraire complètement la VM de l'expérience, ce qui explique pourquoi elle n'est plus documentée.
La solution actuelle pour la dérive temporelle osx sur docker (avril 2018):
J'ai mon mac sur un serveur NTP, mais cette dérive d'horloge fixe avec les conteneurs:
Depuis https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Si votre système n'a pas accès à un serveur NTP, après une mise en veille prolongée, l'heure affichée par Docker pour Mac peut être considérablement désynchronisée avec l'hôte. En outre, l'heure peut lentement dériver de la synchronisation pendant l'utilisation. Pour réinitialiser manuellement l'heure après la mise en veille prolongée, exécutez:
docker run --rm --privileged alpine hwclock -s
Ou, pour résoudre les deux problèmes, vous pouvez ajouter l'horloge locale en tant que source de temps NTP de secours de faible priorité (strate haute) pour l'hôte. Pour ce faire, modifiez le fichier /etc/ntp-restrict.conf de l'hôte pour ajouter:
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
Puis redémarrez le service NTP avec:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Ajoutez /etc/localtime:/etc/localtime:ro
à l' volumes
attribut.
Regardez ce lien pour montrer un exemple.