Où les conteneurs Docker obtiennent-ils leurs informations temporelles ? J'ai créé quelques conteneurs à partir de l'image de base ubuntu:trusty, et lorsque je l'exécute et demande 'date', j'obtiens l'heure UTC.
Pendant un certain temps, j'ai contourné ce problème en faisant ce qui suit dans mon Dockerfile :
RUN sudo echo "America/Los_Angeles" > /etc/timezone
Cependant, pour une raison quelconque, cela a cessé de fonctionner. En cherchant en ligne, j'ai vu la proposition ci-dessous :
docker run -v /etc/timezone:/etc/timezone [image-name]
Ces deux méthodes permettent cependant de définir correctement le fuseau horaire !
$ cat /etc/timezone
America/Los_Angeles
$ date
Tue Apr 14 23:46:51 UTC 2015
Quelqu'un sait ce qui se passe ?
5 votes
Si vous utilisez
Alpine
vous devez installertzdata
d'abord, voir ici github.com/gliderlabs/docker-alpine/issues/1362 votes
POUR VOTRE INFORMATION Je souhaite définir le fuseau horaire du conteneur au moment de l'exécution de docker et non au moment de la construction de docker/dockerfile. En utilisant
-v /etc/localtime:/etc/localtime:ro
(CentOS) fonctionne en quelque sorte. Dans le conteneur, la ligne de commande date renvoie la date dans le format de fuseau horaire attendu. MAIS Jenkins, qui fonctionne dans le conteneur, pense que le fuseau horaire est UTC. Pourquoi ? /etc/localtime est un lien symbolique vers ../usr/share/zoneinfo/UTC dans le conteneur construit. Le contenu du fichier UTC dans le conteneur est maintenant le nouveau fuseau horaire. Mais jenkins (et peut-être d'autres logiciels basés sur Java) utilise le nom du lien symbolique qui est toujours "UTC". Je cherche une solution1 votes
Besoin de 2 choses, 1. Lorsque le conteneur est créé, utiliser un init script pour définir le lien symbolique /etc/localtime et /etc/timezone et 2. pour jenkins le fuseau horaire est pris à partir de deux options java, ces options doivent être passées au init script qui démarre le processus jenkins. par exemple " -Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York -Duser.timezone=America/New_York ". Toutes mes excuses, ceci est spécifique à Jenkins mais j'espère que cela sera utile pour d'autres utilisateurs de Jenkins.