Wie lässt sich die Ortszeit/Zeitzone am allgemeinsten und distributionsunabhängigsten einstellen?

Wie lässt sich die Ortszeit/Zeitzone am allgemeinsten und distributionsunabhängigsten einstellen?

Ich habe einen Docker-Container erstellt, der in der falschen Zeitzone läuft. Ich persönlich brauche ihn in meiner Zeitzone (Europa/Stockholm, GMT+1). Da das Projekt Open Source ist, möchten andere Benutzer dies möglicherweise auch ändern. Ich möchte es jedem leicht machen, dies beispielsweise im Dockerfile oder in der Datei docker-compose.yml zu ändern.

Wenn möglich, wünsche ich mir auch, dass die Lösung nicht nur auf CentOS anwendbar ist, falls jemand eine andere Distribution verwenden möchte.

Was ist der distributionsunabhängigste Ansatz zum Einstellen der Ortszeit/Zeitzone in meinem Docker-Container?


Diese beiden Ansätze scheinen üblich zu sein, aber ich bin nicht sicher, ob sie für mich wirklich die beste Lösung sind:

TZ-Umgebungsvariable

Einige Linux-Distributionen lesen die Umgebungsvariable TZ. Ich stelle jedoch fest, dass dies nicht funktioniert, wenn ich das centos:7Image verwende.

/etc/Ortszeit

Sie können die Container in docker-compose.yml auf dem Host zuordnen. Wenn Sie dies tun, bleiben die verwendeten Distributionen jedoch /etc/localtimebei UTC und die Software, die dies möglicherweise liest, liest dann die falsche Zeitzone./etc/localtime/etc/timezone

Antwort1

Für eine distro-agnostische Lösung wäre ein Skript erforderlich, das erkennt, welche Distribution verwendet wird. Dies liegt daran, dass jede Distributions-„Familie“ Zeitzonen auf unterschiedliche Weise angibt. Für einige könnte es funktionieren, der Docker-Datei Folgendes hinzuzufügen:

RUN echo "Europe/Stockholm" > /etc/timezone

Bei anderen (z. B. Debian) muss das Obige verwendet und anschließend ein weiterer Dockerfile-Befehl wie dieser ausgeführt werden:

AUSFÜHREN AUSFÜHREN sudo dpkg-reconfigure -f noninteractive tzdata

Andere Distributionen (soweit ich mich erinnere, einschließlich CentOS) würden so etwas erfordern wie:

RUN ln -s /usr/share/zoneinfo/Europe/Stockhom /etc/localtime

Um es distributionsunabhängig zu machen, müsste man die Methode jeder Distribution zur Neukonfiguration der Zeitzone untersuchen. Wenn Sie sich /etc/localtime ansehen, werden Sie feststellen, dass es sich nicht um eine Textdatei handelt.

verwandte Informationen