По умолчанию в Docker контейнерах используется UTC в качестве часового пояса независимо от настроек часового пояса на хостовом компьютере.
Вы можете задать часовой пояс для Docker контейнера при запуске через переменную окружения TZ:
$ docker run -e TZ='Europe/Samara' ubuntu:latest date
Можно передать часовой пояс через Dockerfile:
FROM ubuntu:22.04 RUN apt-get update && \ apt-get install -yq tzdata ENV TZ="Europe/Samara"
В этом примере дополнительно устанавливается пакет tzdata.
Однако это может не работать в некоторых образах docker из-за того, что в них для экономии места удалены временные зоны в директории /usr/share/zoneinfo
.
В этом случае вы можете пробросить эту директорию с хоста в контейнер:
$ docker run -e TZ='Europe/Samara' –volume /usr/share/zoneinfo/Europe:/usr/share/zoneinfo/Europe:ro -it ubuntu:latest bash
Проброс директории с часовыми поясами через файл docker compose:
services: ubuntu: image: ubuntu:latest container_name: ubuntu_container environment: - TZ=Europe/Samara volumes: - /usr/share/zoneinfo/Europe:/usr/share/zoneinfo/Europe:ro