投稿

シノロジー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.

この記事は著作権者のライセンス:LICENSE_NAMEに従います。