14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerコンテナ内のタイムゾーンを変更する

Last updated at Posted at 2018-07-09

Docker コンテナのタイムゾーンの変更

Docker コンテナでタイムゾーン設定は Dockerfile で特定のタイムゾーンへ変更するよりも、実行時に環境に合わせて外から変更できる方が移植性が高い状態を保つことができます

そのために、コンテナ起動時に /etc/localtime へ任意のタイムゾーンファイルをアタッチすることで設定します

タイムゾーンの設定の仕方

タイムゾーンは /etc/localtime で定義されています
このファイルはシンボリックリンクになっていて、向き先を任意のタイムゾーンファイルに変えることでタイムゾーンが変更されます

$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 32 May 29 14:22 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo

Docker コンテナのタイムゾーンを外から設定する

Docker ホスト側と同じタイムゾーンに設定する

Dockerコンテナを起動するホスト側の /etc/localtime をコンテナ側に読み取り専用でアタッチすると、ホスト側のタイムゾーンと同じにすることができます

$ sudo docker run -it --rm -v /etc/localtime:/etc/localtime:ro ubuntu:16.04 date
Wed Jun 8 20:50:16 JST 2018

Docker ホスト側と別のタイムゾーンを設定する

ホストと別のタイムゾーンに設定したい場合でも、ホスト側に持っている定義ファイルを /etc/localtime にアタッチすれば OK

$ sudo docker run -it --rm -v /usr/share/zoneinfo/America/Los_Angeles:/etc/localtime:ro ubuntu:16.04 date
Tue Jun 8 20:54:16 PDT 2018

※元ネタはこちらを参考にしました
https://stackoverflow.com/questions/22800624/will-docker-container-auto-sync-time-with-the-host-machine/22820278#22820278

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?