背景 ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タイムゾーンが UTC になり、北京時間より常に 8 時間遅れていることに気付きました。
/etc/localtime を確認すると、デフォルトのタイムゾーンは Etc/UTC であることがわかりました。また、TZ 環境変数は設定されていません。 Linux でタイムゾーンの問題に対処する方法 実際、タイム ゾーン処理の問題はすべて、glibc でのタイム ゾーン処理の問題です。この問題に関する最も権威のあるドキュメントは、TZ 環境変数について説明し、タイム ゾーンの問題の処理を紹介する公式の glibc ドキュメントです。 https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html#TZ-Variable 弊社に関係する部分は以下の通りです。 基本的な意味は次のとおりです。glibc では、TZ 環境変数の値は、タイムゾーン関連の情報を記述したファイルの名前です。 TZ 環境変数が設定されていない場合、システムはデフォルト値を選択します。glibc では、デフォルト値は /etc/localtime です。TZ 環境変数に値があり、その値が / で始まる場合、それは絶対パスのファイル名です。それ以外の場合、ファイル名は /usr/share/zoneinfo/$TZ です。/usr/share/zoneinfo ディレクトリには、Asia/Shanghai など、世界のさまざまな地域のローカル時間情報が含まれています。通常、このディレクトリ内のファイルは tzdata パッケージによってインストールされます。 この考えに従って、TZ環境変数をAsia/Shanghaiに強制すると、タイムゾーンは正しいものになります。 /etc/localtime ファイルを強制的に変更し、タイムゾーンも正しくなります。 Dockerコンテナでタイムゾーンを処理する方法 上記の説明によると、Docker コンテナでタイムゾーンを設定するには、実際には主に 2 つの方法があります。1 つは TZ 環境変数を直接設定する方法で、もう 1 つは TZ 環境変数を設定せずに /etc/localtime の内容を直接変更する方法です (ソフト リンク経由またはファイルを直接コピーする方法)。 ここでは、TZ 環境変数の設定を例に挙げます (私はこれを自分で行うことを好みます。/etc/localtime を変更するよりも便利だと感じます)。 まず、Dockerfile に ENV TZ=Asia/Shanghai を追加して、Docker によって構築されたイメージのデフォルトの TZ 環境変数が必要な値になるようにします。 次に、コンテナをプルアップするときに、-e TZ=Asia/Shanghai を使用して TZ 環境変数を設定することもできます。この設定は動的です。プルアップするときに、同じイメージに異なる値を設定できます。 要約する docker でのタイムゾーン処理は、実際には glibc でのタイムゾーン処理です。glibc の処理方法を理解すると、その中心となるのは TZ 環境変数と /etc/localtime ファイルであり、docker でのタイムゾーン処理は簡単です。 以下もご興味があるかもしれません:
|
<<: InnoDB がトランザクション分離レベルを巧みに実装する方法
>>: WeChatアプレットはキャンバスを使用して時計を描画します
以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...
スクリプトをデバッグモードで実行するbash -x <script> を使用すると、スク...
HTML5 で contentEditable 属性が導入されて以来、div は textarea ...
視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...
最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...
目次イベント駆動型とパブリッシュ・サブスクライブ型ブラウザの JavaScript ではイベント駆動...
目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...
この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参...
目次(1)はじめに: (2)クリップボードの内容をコピーする方法は次のとおりです。 (3)関数演算に...
...こんな感じで、今日はポップアップウィンドウを作ろうと思ったのですが、バックエンド PHP によ...
序文データベース操作では、同時データ読み取りの正確性を効果的に保証するために、トランザクション分離レ...
成果を達成する 実装コードhtml <h1 class="text-light&qu...
ドキュメント: https://github.com/hilongjw/vue-lazyload 1...
inline-block について学習しているときに、境界線と inline-block を持つ複数...
1. 最左プレフィックス原則 - 複数の列にインデックスが付けられている場合は、最左プレフィックス原...