Я пытаюсь запустить контейнер 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