¿Dónde obtienen su información de tiempo los contenedores de Docker? He creado algunos contenedores a partir de la imagen básica de ubuntu:trusty, y cuando lo ejecuto y solicito 'date', obtengo la hora UTC.
Por un tiempo, solucioné esto haciendo lo siguiente en mi Dockerfile:
RUN sudo echo "America/Los_Angeles" > /etc/timezone
Sin embargo, por alguna razón eso dejó de funcionar. Buscando en línea vi lo siguiente sugerido:
docker run -v /etc/timezone:/etc/timezone [nombre-de-la-imagen]
¡Ambos métodos establecen correctamente la zona horaria aunque!
$ cat /etc/timezone
America/Los_Angeles
$ date
Tue Apr 14 23:46:51 UTC 2015
¿Alguien sabe qué pasa?
5 votos
Si usas
Alpine
, primero necesitas instalartzdata
, ve aquí github.com/gliderlabs/docker-alpine/issues/1362 votos
Para información . . . Me gustaría establecer la zona horaria del contenedor en tiempo de ejecución de docker y no en el tiempo de construcción del docker/dockerfile. Usar
-v /etc/localtime:/etc/localtime:ro
(CentOS) funciona en parte. Dentro del contenedor, el comando de línea de fecha devuelve la fecha en el formato de zona horaria esperado. PERO jenkins en ejecución dentro del contenedor piensa que la zona horaria es UTC. ¿Por qué? /etc/localtime es un enlace simbólico a ../usr/share/zoneinfo/UTC en el contenedor construido. El contenido del archivo UTC en el contenedor es ahora la nueva zona horaria. Pero jenkins (y quizás otro software basado en Java) utilizan el nombre del enlace simbólico que aún es "UTC". Buscando solución . . .1 votos
Necesito 2 cosas, 1. cuando se crea el contenedor, utilizar un script de inicio para configurar el enlace simbólico /etc/localtime y /etc/timezone y 2. para jenkins, la zona horaria se obtiene de dos opciones de Java, estas opciones deben pasarse al script de inicio que inicia el proceso de jenkins. por ejemplo, " -Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York -Duser.timezone=America/New_York ". Disculpas, esto es específico de jenkins pero espero que sea útil para otros usuarios de jenkins.