Назад | Перейти на главную страницу

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

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

Когда я бегу:

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

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

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

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

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

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

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

$ TZ=FOO date
Fri Apr 17 14:07:56 FOO 2020

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

Ссылки :

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

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

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

ENV TZ=America/Los_Angeles
RUN 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