Tengo estibadores funcionando en servidores Linode. A veces, veo que no es el momento adecuado para los estibadores. Actualmente he cambiado el script de ejecución en cada ventana acoplable para incluir las siguientes líneas de código.
yum install -y ntp
service ntpd stop
ntpdate pool.ntp.org
Sin embargo, lo que idealmente me gustaría hacer es que la ventana acoplable sincronice la hora con el host. ¿Hay alguna forma de hacer esto?
docker
comandos, es posible que vea un sesgo de tiempo y cosas como el montaje de volúmenes no funcionarán como cabría esperar. Esto también sucede cuando configura una máquina acoplable remota, por ejemplo, en DigitalOcean.Respuestas:
La fuente de esta respuesta es el comentario a la respuesta en: ¿El contenedor Docker sincronizará automáticamente el tiempo con la máquina host?
Después de mirar la respuesta, me di cuenta de que no hay forma de que ocurra una desviación del reloj en el contenedor de la ventana acoplable. Docker usa el mismo reloj que el host y no puede cambiarlo. Significa que hacer un
ntpdate
inside the docker no funciona.Lo correcto es actualizar la hora del host usando
ntpdate
En lo que respecta a la sincronización de zonas horarias,
-v /etc/localtime:/etc/localtime:ro
funciona.fuente
boot2docker restart
O si ejecuta su propia máquina virtual, puede hacerlontpdate
allí.Puede agregar sus archivos locales (/ etc / timezone y / etc / localtime) como volumen en su contenedor Docker.
Actualice su
docker-compose.yml
con las siguientes líneas.volumes: - "/etc/timezone:/etc/timezone:ro" - "/etc/localtime:/etc/localtime:ro"
Ahora el tiempo del contenedor es el mismo que en su host.
fuente
Si está utilizando boot2docker y ntp no funciona dentro de la máquina virtual docker (está detrás de un proxy que no reenvía paquetes ntp) pero su host está sincronizado en el tiempo, puede ejecutar lo siguiente desde su host:
De esta manera, está enviando la hora actual de su máquina (en la zona horaria UTC) como una cadena para configurar la hora de la máquina virtual acoplable
date
(nuevamente en la zona horaria UTC).NOTA: en Windows, dentro de un shell bash (desde msys git), use:
fuente
date
comando sólo se acepta el formatoMMDDhhmm[[CC]YY][.ss]
para ajustar la fecha, por lo que añadir segundos, es necesario ponerlos al final de la cadena como esta:+%m%d%H%M%Y.%S
.Esto es lo que me funcionó con un host Fedora 20. Ejecuté un contenedor usando:
Inicialmente
/etc/localtime
fue un vínculo suave al/usr/share/zoneinfo/Asia/Kolkata
que Indian Standard Time. La ejecucióndate
dentro del contenedor me mostró el mismo tiempo que el del host. Salí del caparazón y detuve el contenedor usandodocker stop <container-id>
.A continuación, eliminé este archivo y lo vinculé con
/usr/share/zoneinfo/Singapore
fines de prueba. La hora del host se estableció en la zona horaria de Singapur. Y luego lo hizodocker start <container-id>
. Luego accedió a su caparazón nuevamente usandonsenter
y descubrió que la hora ahora estaba configurada en la zona horaria de Singapur.Entonces, la clave aquí es usar
-v /etc/localtime:/etc/localtime:ro
cuando ejecute el contenedor por primera vez. Lo encontré en este enlace .Espero eso ayude.
fuente
Esto restablecerá la hora en el servidor de la ventana acoplable:
La próxima vez que cree un contenedor, el reloj debería ser correcto.
Fuente: https://github.com/docker/for-mac/issues/2076#issuecomment-353749995
fuente
Si está utilizando docker-machine, las máquinas virtuales pueden desplazarse. Para actualizar el reloj en la máquina virtual sin reiniciar, ejecute:
Esto actualizará el reloj en la máquina virtual usando NTP y luego todos los contenedores lanzados tendrán la fecha correcta.
fuente
Me enfrentaba a una compensación de tiempo de -1 hora y 4 minutos
Reiniciar Docker me solucionó el problema.
Para configurar la zona horaria en general:
ssh en su contenedor:
docker exec -it my_website_name bash
correr
dpkg-reconfigure tzdata
date
fuente
docker-compose exec <servicename> bundle exec dpkg-reconfigure tzdata
Parece que puede variar en el tiempo si está utilizando Docker Machine, como sugiere esta respuesta: https://stackoverflow.com/a/26454059/105562 , debido a VirtualBox.
La solución rápida y fácil es simplemente reiniciar su VM:
fuente
Tengo lo siguiente en el archivo de redacción
volumes: - "/etc/timezone:/etc/timezone:ro" - "/etc/localtime:/etc/localtime:ro"
Entonces todo bien en la ventana acoplable Gerrit con su replication_log configurado con la marca de tiempo correcta.
fuente
Para docker en macOS, puede usar docker-time-sync-agent . Esto funciona para mi.
fuente
Con Docker para Windows tuve que marcar
en el administrador de Hyper-V y funcionó
fuente
uso de docker-compose:
Agregue
/etc/localtime:/etc/localtime:ro
alvolumes
atributo:version: '3' services: a-service: image: service-name container_name: container-name volumes: - /etc/localtime:/etc/localtime:ro
fuente
Aunque esta no es una solución general para todos los hosts, alguien puede encontrarla útil. Si sabe dónde se encuentra (Reino Unido para mí), mire la
tianon's
respuesta aquí .FROM alpine:3.6 RUN apk add --no-cache tzdata ENV TZ Europe/London
Esto es lo que agregué a mi Dockerfile ^ y se solucionó el problema de la zona horaria.
fuente
Descubrí que si su computadora entra en suspensión, el contenedor de la ventana acoplable no está sincronizado.
https://forums.docker.com/t/time-in-container-is-out-of-sync/16566
He hecho una publicación al respecto aquí El certificado siempre vence hace 5 días en Docker
fuente
Uso de Docker
Aquí hay un ejemplo completo que crea una imagen de Docker para una aplicación Go en una compilación de varias etapas. Muestra cómo incluir la zona horaria en su imagen.
fuente
Para mí, reiniciar Docker Desktop no ayudó. Apagar Win10 y comenzar de nuevo, ayudó.
fuente
Usuarios de Windows:
La solución es muy simple. Simplemente abra un indicador de PowerShell e ingrese:
docker run --privileged --rm alpine date -s "$(Get-Date ([datetime]::UtcNow) -UFormat "+%Y-%m-%d %H:%M:%S")"
Para comprobar que funciona, ejecute el comando:
docker run --rm -it alpine date
Mi solución está inspirada en algo que encontré en el hilo del foro de Docker. De todos modos, fue la única solución que funcionó para mí en el escritorio de la ventana acoplable, excepto para reiniciar mi máquina (que también funciona). Aquí hay un enlace al hilo original: https://forums.docker.com/t/syncing-clock-with-host/10432/23
La diferencia entre la respuesta del hilo y la mía es que la mía convierte la hora a la hora UTC, que es necesaria para, por ejemplo, AWS. De lo contrario, la respuesta original del foro se ve así:
docker run --privileged --rm alpine date -s "$(date -u "+%Y-%m-%d %H:%M:%S")"
fuente
Habilitar Hyper-V en las características de Windows resolvió el problema: Características de Windows
fuente