docker контейнерный часовой пояс не распространяется - PullRequest
1 голос
/ 02 февраля 2020

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

$:~/$ cat /etc/timezone
Asia/Jerusalem
$:~/$ date
Sun Feb  2 13:50:02 IST 2020 # TIME ON HOST (correct)
$:~/$ docker run --rm -v /etc/timezone:/etc/timezone:ro -v 
/etc/localtime:/etc/localtime:ro -e TZ=`cat /etc/timezone` ubuntu date
Sun Feb  2 11:50:08 Asia 2020 # TIME ON THE CONTAINER (wrong) 

Как видите, часовой пояс контейнера неправильный, а время всегда UT C.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2020

Для использования переменной окружения TZ необходимо использовать изображение, включающее пакет tzdata. Например, определите файл dockerfile следующим образом:

FROM ubuntu
RUN apt-get update \
    && apt-get install -y --no-install-recommends tzdata

Создайте свой собственный образ:

docker build -t my_image .

Затем можно установить местное время внутри контейнера, передав переменную TZ.

docker run --rm -e TZ=Asia/Jerusalem my_image date
0 голосов
/ 02 февраля 2020

Достаточно просто установить /etc/localtime в режиме только для чтения, чтобы установить время внутри контейнера.

docker run --rm -v /etc/localtime:/etc/localtime:ro busybox date

Выход

Sun Feb  2 21:26:54 IST 2020
0 голосов
/ 02 февраля 2020

похоже, что опция -e TZ = cat /etc/timezone на самом деле ломает вещи. Я только что удалил этот параметр, и теперь он работает хорошо:

docker run --rm -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro ubuntu date

Примечание: он работает для контейнеров ubuntu и alpine . Для busybox это все еще не так.

...