Время контейнера Docker отстает на 2 часа, когда TZ=CEST

Я пытаюсь запустить контейнер Docker с тем же часовым поясом, что и мой хост Docker. Часовой пояс хоста - это CEST.

Когда я бегу :

$ dateThu Apr 16 11:04:11 CEST 2020$ docker run -e TZ=CEST debian:buster dateThu Apr 16 09:04:14 CEST 2020

Контейнер отстает от хоста на 2 часа.

С другой стороны, если я установлю TZ=Europe/Paris, это работает, как и ожидалось :

$ docker run -e TZ=Europe/Paris debian:buster dateThu Apr 16 11:04:22 CEST 2020

Это ошибка или я что-то упускаю?

Часовой пояс установлен по умолчанию, и вам необходимо изменить его вручную.

Есть несколько вариантов:

Установите его в Dockerfile:

ENV TZ=America/Los_AngelesRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Использование томов для синхронизации с вашим хостом:

volumes:- "/etc/timezone:/etc/timezone:ro"- "/etc/localtime:/etc/localtime:ro"

или

docker run -v /etc/timezone:/etc/timezone:ro

Наконец, установите его вручную, но если вы перезапустите контейнер, вы потеряете конфигурацию:

docker run -e TZ=America/New_York ubuntu date

После некоторых исследований выяснилось, что CEST не является допустимым значением для TZ переменная среды. CEST это просто отображаемая версия CET когда текущая дата является лето.

На самом деле, если я установлю TZ к явно недопустимому значению, это дает :

$ TZ=FOO dateFri Apr 17 14:07:56 FOO 2020

Также обратите внимание, что это не имеет никакого отношения к Docker.

Рекомендации :