at_shinya.matsumoto
2022年6月2日 8時35分
本ブログではコンテナ内のタイムゾーンを変更する方法をご説明します。
下記の様にArmadillo BASE OSとコンテナ内のコマンド実行を表現します。
[armadillo] ・・・ホスト(Armadillo BASE OS)のコマンド
[container] ・・・コンテナ内のコマンド
1.デフォルトのタイムゾーン
デフォルトではホストではJSTになっておりますが、そのままコンテナを作成すると下記の様に大抵は
UTCになっています。JSTや他のタイムゾーンに変更したい場合は、設定を変える必要があります。
ホストの時刻確認(JSTで表示される)
[armadillo]# date
Fri Apr 28 16:50:12 JST 2023
コンテナを作成してコンテナ内の時刻を確認(UTCで表示される)
コンフィグファイルを下記の様に作成
[armadillo]# cat /etc/atmark/containers/tz.conf
set_image debian:bullseye
set_autostart no
add_args -it
set_command /bin/bash
Debianコンテナ作成~コンテナ内のタイムゾーン確認
[armadillo]# podman_start tz
[armadillo]# podman exec tz date
Fri Apr 28 07:52:50 UTC 2023
2.コンテナ内のタイムゾーンの変更方法
コンテナ内のタイムゾーンの変更は通常の各OSの設定方法とは異なります。(変更しても反映されない)
方法は2種類あり、採用するコンテナイメージ(コンテナの環境)に依存します。
大抵は下記どちらかで対応可能です。
1.コンテナ作成時にTZ環境変数を渡す
2.ホストの/etc/localtimeをマウントする
以下にDebianで実施します。(Debianはどちらも対応可能)
1.コンフィグファイルでTZ環境変数を渡す
[armadillo]# cat /etc/atmark/containers/tz.conf
set_image debian:bullseye
add_args --env=TZ=Asia/Tokyo //★この行を追加
set_autostart no
add_args -it
set_command /bin/bash
[armadillo]# podman_start tz
[armadillo]# podman exec tz date
Fri Apr 28 17:01:30 JST 2023
2.コンフィグファイルでホストの/etc/localtimeをマウントする
[armadillo]# cat /etc/atmark/containers/tz.conf
set_image debian:bullseye
add_volumes /etc/localtime:/etc/localtime:ro //★この行を追加
set_autostart no
add_args -it
set_command /bin/bash
[armadillo]# podman_start tz
[armadillo]# podman exec tz date
Fri Apr 28 17:09:14 JST 2023
以上で、コンテナ内のタイムゾーンの設定は完了です。