シノロジーNAS-ドッカーコンテナのタイムゾーン設定
誰もが知っているように、Dockerイメージをビルドするための仕様であるDockerfileで、イメージに必要なaptパッケージのインストールを追加できます。これにより、dockerイメージのビルド中にイメージにaptパッケージがインストールされます。
一般的なUbuntuシステムで最初にaptパッケージをインストールしようとすると、tzdata設定でタイムゾーンを設定するために地域と都市をInteractiveに尋ねます。しかし、これはDocker Image BuildプロセスがInteractiveの手順をサポートしていないため、Docker Image Build失敗の結果を生み出します。
DEBIAN_FRONTEND環境変数
したがって、この問題を解決するためにDockerfileに DEBIAN_FRONTEND
環境変数を noninteractive
に設定することで、ドッカーイメージビルド中にタイムゾーン設定のための地域と都市を尋ねることを省略することができる。
以下はDockerfileの簡単な例です。
1
2
3
4
5
6
7
8
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y vim git wget rsyslog sudo
# add and so on ..
CMD bash
ここまでは問題ない。しかし、現在時刻を活用するソフトウェアを開発し、ソースコード内で現在時刻を取得するAPIを使用すると問題が始まる。タイムゾーン設定がないシステムの時間はUTC基準になります。だからあなたが使うソフトウェア開発言語の時間関連機能とシステム時間処理が重なってソフトウェアの誤動作を作る可能性がある。
tzdata、そしてタイムゾーン設定
だから、それは非常に面倒ですが、コンテナを作成してAttachした後に以下のコマンドを介して別々に手動でタイムゾーンを設定する必要があります。当然、ドッカーコンテナの外のLinuxシステムでコンテナのタイムゾーンを設定することができますが、私はシノロジーナスのドッカーを使用しているので、その方法を見つけるのは曖昧でした。
1
dpkg-reconfigure tzdata
以下はタイムゾーンを設定するための私の例です。下部に下のフレーズの時間があなたの地域の時間であれば正しくタイムゾーンが設定されているのだ。
- Local time is now
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
root@img:~# dpkg-reconfigure tzdata
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the
time zones in which they are located.
1. Africa 3. Antarctica 5. Arctic Ocean 7. Atlantic Ocean 9. Indian Ocean 11. System V timezones 13. None of the above
2. America 4. Australia 6. Asia 8. Europe 10. Pacific Ocean 12. US
Geographic area: 6
Please select the city or region corresponding to your time zone.
1. Aden 11. Baku 21. Damascus 31. Hong Kong 41. Kashgar 51. Makassar 61. Pyongyang
2. Singapore 81. Ujung Pandang
...
9. Baghdad 19. Chongqing 29. Hebron 39. Kamchatka 49. Macau 59. Phnom Penh 69. Seoul
10. Tokyo 89. Yekaterinburg
...
Time zone: 69
Current default time zone: 'Asia/Seoul'
Local time is now: Thu Feb 1 23:46:23 KST 2024.
Universal Time is now: Thu Feb 1 14:46:23 UTC 2024.