El shell de LINUX usa por defecto la zona horaria del host. Para cambiar este comportamiento usamos la variable de entorno TZ.
Para ver la configuración actual:
$ timedatectl
Podemos establecer la zona horaria con el comando en modo interactivo:
$ tzselect
Para que los cambios sean permanentes, deberemos modificar el archivo .profile usando el comando timedatctl
:
El comando para cambiarlo directamente a Europe/Madrid:
$ timedatectl set-timezone Europe/Madrid
Para ver los valores posible podemos usar:
$ timedatectl list-timezones
Para establecer la hora usaremos:
$ timedatectl set-time <YYYY-MM-DD> <hh:mm:ss>
Y para mantener el reloj sincronizado:
$ timedatectl set-ntp true
Si lo que queremos es aplicar la zona horaria a un determinado contenedor docker podemos asignar la variable de entorno en:
El dockerfile:
ENV TZ=Europe/Madrid
El docker run:
$ docket run .... -e 'TZ=Europe/Madrid'
O podemos establecer la variable de entorno en el docker-compose.yml:
environment:
- TZ=Europe/Madrid
Para heredar en un contenedor la zona y la hora del host, lo más sencillo es colocar los siguientes binds en el docker-compose.yml:
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
De esta manera, cualquier cambio de configuración horaria del host se aplicará al contenedor.
El ro indica que accederá al archivo de hora y zona en modo solo-lectura.