En donnant j'ai déjà changé correctement le fuseau horaire du conteneur docker. Dois-je installer un serveur NTP à l'intérieur du conteneur Docker pour synchroniser périodiquement l'heure ou le conteneur synchronisera l'heure depuis sa machine hôte?
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.
la source
La solution la plus simple semble être d'exécuter votre conteneur avec l'
-v /etc/localtime:/etc/localtime:ro
option. Donc:la source
--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.
Cependant, accéder à un terminal sur la machine virtuelle est une autre question, qui peut être effectuée si vous utilisez la commande screen.
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 simplementroot
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 source
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:
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:
Puis redémarrez le service NTP avec:
la source
utilisation de docker-compose:
Ajoutez
/etc/localtime:/etc/localtime:ro
à l'volumes
attribut.Regardez ce lien pour montrer un exemple.
la source