Docker : コンテナのタイムゾーンを変更する

Docker イメージを使ったときのコンテナ内の時刻を JST に変更する。

Alpine Linux

Dockerfile に下記を追加する。

RUN apk add --update --no-cache tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    echo "Asia/Tokyo" > /etc/timezone && \
    apk del tzdata

確認方法

docker psコマンドで起動中のコンテナの一覧を表示する。

# docker ps 
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                 NAMES
527eafb9a8b4        docker-efk_kibana          "/usr/local/bin/dumb…"   14 seconds ago      Up 12 seconds       5601/tcp              kibana
ef65f95e1c80        docker-efk_fluentd         "tini -- /bin/entryp…"   14 seconds ago      Up 12 seconds       5140/tcp, 24224/tcp   fluentd
a0baa2d85f8a        docker-efk_elasticsearch   "/usr/local/bin/dock…"   14 seconds ago      Up 12 seconds       9200/tcp, 9300/tcp    elasticsearch

docker execコマンドでコンテナにログインする。

# docker exec -it ef65f95e1c80 /bin/ash
/ # date
Wed Feb 26 19:36:33 JST 2020

CentOS

Dockerfile に下記を追加する。

ENV TZ='Asia/Tokyo'

確認方法

docker execコマンドでコンテナにログインする。

# docker exec -it 527eafb9a8b4 /bin/bash
bash-4.2$ date
Wed Feb 26 19:43:33 JST 2020

参考サイト

Alpine Linux で timezone を変更する(最新版?) - Qiita

Setting the timezone - Alpine Linux

Dockerfileでタイムゾーンを設定する方法 - フリーランスのエンジニア道