Respuestas:
Si está en OSX ejecutando boot2docker, vea este problema: https://github.com/boot2docker/boot2docker/issues/290
La sincronización de tiempo se convierte en un problema porque el host boot2docker tiene su tiempo de deriva mientras su sistema operativo está inactivo. La sincronización de tiempo con su contenedor docker no se puede resolver ejecutando su contenedor con-v /etc/localtime:/etc/localtime:ro
En cambio, por ahora, debe ejecutar esto periódicamente en OSX:
/usr/local/bin/boot2docker ssh sudo ntpclient -s -h pool.ntp.org
Actualización para usuarios de Kitematic
Si está ejecutando Kitematic , que ahora es el mecanismo sugerido para comenzar a ejecutar Docker en OSX, deberá ejecutar periódicamente este comando:
docker-machine ssh default 'sudo ntpclient -s -h pool.ntp.org'
O, para versiones anteriores de Docker
docker-machine ssh dev 'sudo ntpclient -s -h pool.ntp.org'
Actualización para usuarios del nuevo Docker nativo para OSX
La nueva Docker Beta elimina VirtualBox y Docker Machine. Las últimas compilaciones de Docker (actualmente, 1.12.1-beta25 (compilación: 11807)) parecen tener la capacidad de detectar cuándo ha habido una discontinuidad temporal y ajustarse en consecuencia. Por lo tanto, esto ya no debería ser un problema ... ¡¡hurra !!
https://github.com/sameersbn/docker-gitlab/issues/77
Vea la respuesta de sameersbn.
option 1: -v /etc/localtime:/etc/localtime:ro
option 2: -e "TZ=Asia/Shanghai"
La solución más simple parece ser ejecutar su contenedor con la -v /etc/localtime:/etc/localtime:ro
opción. Así:
#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
modo).
date
en la máquina host en mi MWE, ya que, de lo contrario, quizás no esté claro que el contenedor obtenga su tiempo del host.
setup mount namespace mounting /etc/localtime into /mnt/sda1/var/lib/docker/aufs/mnt/.../etc/localtime not a directory
En Docker para Mac OS X Beta, experimenté un cambio significativo en la máquina virtual, que se basa en Alpine Linux. Desde las Preguntas frecuentes de Alpine Linux , puede sincronizar el reloj de la máquina virtual con el siguiente comando.
ntpd -d -q -n -p pool.ntp.org
Sin embargo, obtener acceso a un terminal en la máquina virtual es otra cuestión, que se puede hacer si usa el comando de pantalla.
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Esa ruta es un enlace simbólico, que en mi sistema apunta a /dev/ttys003
.
Una vez que ingrese, tenga en cuenta que moby login
simplemente root
no tiene contraseña. Una vez que haya terminado, CTRL-A, D se desconectará de la sesión de pantalla.
NOTA: Esto solía estar documentado en la resolución de problemas de Docker para Mac, pero parece que se ha eliminado. Tuve la suerte de que me lo mostraran en Dockercon 2016. Parece que Docker está tratando de abstraer completamente la VM de la experiencia, lo que explica por qué ya no está documentado.
La solución actual para la deriva de tiempo de osx en Docker (abril de 2018):
Tengo mi mac en un servidor NTP, pero esta deriva de reloj fija con contenedores:
De https://docs.docker.com/docker-for-mac/troubleshoot/#known-issues :
Si su sistema no tiene acceso a un servidor NTP, luego de una hibernación, el tiempo visto por Docker para Mac puede estar considerablemente desincronizado con el host. Además, el tiempo puede perder la sincronización lentamente durante el uso. Para restablecer manualmente el tiempo después de la hibernación, ejecute:
docker run --rm --privileged alpine hwclock -s
O, para resolver ambos problemas, puede agregar el reloj local como una fuente de tiempo NTP de reserva de baja prioridad (estrato alto) para el host. Para hacer esto, edite /etc/ntp-restrict.conf del host para agregar:
server 127.127.1.1 # LCL, local clock
fudge 127.127.1.1 stratum 12 # increase stratum
Luego reinicie el servicio NTP con:
sudo launchctl unload /System/Library/LaunchDaemons/org.ntp.ntpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.ntp.ntpd.plist
Agregue /etc/localtime:/etc/localtime:ro
al volumes
atributo.
Mire este enlace para demostrar un ejemplo.