スタック内のすべてのコンテナで同様のタイムゾーンを持つことにはいくつかの問題がありますdocker-compose
。
TZ=Europe/Paris
コンテナに環境変数を追加し、次を試しました。
volumes:
-v /etc/timezone:/etc/timezone:ro
-v /etc/localtime:/etc/localtime:ro
現在/etc/timezone
Debian / Ubuntuベースのコンテナでは実行(バンドル)できますが、Alpineベースのコンテナでは実行できません。
ベストプラクティスは何ですか、そして/またはすべてのLinuxコンテナに適用されるものは何ですか?
答え1
ボリュームを使用してタイムゾーンを変更するのはうまくいきません。ホストとコンテナの間に多くの依存関係が発生します。 kubernetes またはホスティング環境で実行している場合は、ホストのタイムゾーンを制御できません。
変数を使用することをお勧めしますTZ
。
Ubuntuの場合、画像にすでにパッケージがある場合はTZ変数を設定できますtzdata
。
Ubuntu 18.04/19.04/19.10の場合
これらは動作しません
for V in 18.04 18.10 19.04 19.10
do
docker run -e TZ=America/New_York -it ubuntu:${V} /bin/bash -c date
done
しかし、これらは
for V in 18.04 18.10 19.04 19.10
do
docker run -e TZ=America/New_York -it ubuntu:${V} \
/bin/bash -c '( export DEBIAN_FRONTEND=noninteractive ; apt-get update ; apt-get install tzdata ) >/dev/null 2>&1 ; date'
done
*DEBIAN Stretch/Busterの場合*
これらは動作しています
docker run -e TZ=America/New_York -it debian:stretch /bin/bash -c date
docker run -e TZ=America/New_York -it debian:buster-slim /bin/bash -c date
docker run -e TZ=America/New_York -it debian:buster /bin/bash -c date
docker run -e TZ=America/New_York -it debian:stretch-slim /bin/bash -c date
アルプスのために
これは次のようになります。
docker run -e TZ=America/New_York -it alpine:3.10 date
これはうまくいきません:
docker run -e TZ=America/New_York -it alpine:3.10 /bin/sh -c '(apk update ; apk add tzdata)>/dev/null 2>&1 ; date '
CentOSの場合
これらは動作しています
for V in 6 7 8 ;
do
docker run -e TZ=America/New_York -it centos:${V} /bin/bash -c date ;
done