docker: синхронизация времени в контейнере с хостом

У меня запускается ряд процессов в докер-контейнерах.

Но время в логах указывается совсем не такое, как на хосте.

Я попробовал пересоздать контейнер, добавив в команду docker run параметр -v /etc/timezone:/etc/timezone:ro, как это советуют в докер-форумах

Но, к сожалению, это не привело к результату:

при выполнении docker exec -it в этот контейнер, команда date выводит опять время, не совпадающее со временем хоста. Хотя cat /etc/timezone выводт в контейнере ту же таймзону ( Europe/Moscow ), что и на хосте.

Не могли бы Вы мне подсказать, в какую сторону смотреть, чтобы найти решение проблемы?

(Теоретически, я мог бы в каждый контейнер включать какой то способ при запуске принудительно поставить время, пердварительно получив его из внешнего источника, но мне это кажется очень сложным способом.)

Спасибо.


Ответы (1 шт):

Автор решения: aleksandr barakin

да просто передайте стандартную переменную окружения TZ с именем вашей часовой зоны:

$ docker run -ti --rm debian:10 date
Fri Dec 17 22:45:46 UTC 2021
$ docker run -ti --rm -e TZ=Europe/Moscow debian:10 date
Sat Dec 18 01:46:07 MSK 2021

или даже более универсально, не указывайте зону явно, а получите её название из файла:

docker run -ti --rm -e TZ=$(cat /etc/timezone) debian:10 date
Sat Dec 18 01:53:25 MSK 2021
→ Ссылка