Docker-Zeitzonenproblem und Datenmigrationsproblem

Docker-Zeitzonenproblem und Datenmigrationsproblem

Neueste Lösung:

-v /usr/share/zoneinfo/Asia/Shanghai:/etc/Zeitzone -v /etc/Ortszeit:/etc/Ortszeit:ro

docker run --name tomcat-service-0 -d -p 8080:8080 -v /usr/share/zoneinfo/Asia/Shanghai:/etc/timezone -v /etc/localtime:/etc/localtime:ro -v /home/zjy/logs/tomcat-service-0:/usr/local/tomcat/logs -v /home/zjy/code/ligu/target:/usr/local/tomcat/webapps tomcat

Frage 1

Beim Bereitstellen des Projekts mithilfe von Docker stellte sich heraus, dass die Zeitzone im Docker-Container 8 Stunden von der Serverzeit abwich.
Obwohl die Serverzeit und die Containerzeit mit -v /etc/localtime:/etc/localtime synchronisiert werden, unterscheidet sich die Zeitzone von Tomcat im Container immer noch um 8 Stunden.

veranschaulichen

-v /etc/localtime:/etc/localtime

Beim Start wird mit diesem Befehl nur die Systemzeit des Servers und des Containers gemountet. Sie können den Container aufrufen und den Befehl „date“ ausführen, um zu sehen, dass die Zeit im Container tatsächlich geändert wurde, das Datum der Umgebung, in der Tomcat im Container ausgeführt wird, jedoch unverändert bleibt.
Da die Zeitzone des Tomcat-Containers beim Abrufen des Tomcat-Images festgelegt ist, besteht unsere einzige Lösung darin, beim Kompilieren des Tomcat-Images die lokale Serverzeit an das Image zu binden.

Lösung (super einfach)

Verwenden Sie DockerFile, um das Image zu kompilieren. Das Dockerfile sieht wie folgt aus

# Basisbild abrufen 
VON Tomcat:neueste 
ENV TZ=Asien/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Führen Sie den folgenden Befehl aus

Befehlsformat:
$docker build -t Imagename Dockerfilepfad
$:docker build -t timetomcat/timetomcat.

Wenn Sie den Container dann später starten, verwenden Sie den kompilierten Tomcat

Wie gezeigt

Bildbeschreibung hier einfügen

Docker-Containermigration

veranschaulichen

Wenn sich ein von Docker bereitgestellter Server ändert, z. B. eine Datenbank, und Sie ihn an einer neuen Adresse bereitstellen möchten, gibt es viele Möglichkeiten, diese Daten zu migrieren:

Für Datenbanken:

1 Verwenden Sie die Master-Slave-Replikationssicherung von MySQL. Sichern Sie den MySQL-Server während des Projektbetriebs an mehreren Adressen. Weitere Einzelheiten finden Sie unter: https://zhangjy520.github.io/

2 Verwenden Sie beim Starten von MySQL -v, um den lokalen Pfad und den Containerpfad zu mounten, und kopieren Sie dann den lokalen Pfad bei der Migration auf den neuen Server.
-v /home/mysql/master/data/db-conf:/etc/mysql/ -v /home/mysql/master/data/db-data:/var/lib/mysql

3 Exportieren Sie die MySQL-Datenbank und importieren Sie sie an eine neue Adresse, die relativ niedrig ist

4 Verwenden Sie die Docker-Containermigration. In diesem Blog geht es hauptsächlich um Docker. Hier sprechen wir hauptsächlich über die Verwendung der Docker-Migration

Lösung (super einfach) Containermigration

export / import

Auf dem Quellserver ausführen

docker export 83271b648212 >time.tar //Container exportieren. Die Nummer hier ist die Container-ID. Es wird ein Tarball abgerufen.

Erklärung: Wenn Sie dieses komprimierte Paket öffnen, können Sie sehen, dass es sich tatsächlich um eine Verzeichnisstruktur eines Linux-Servers handelt. Dieser Befehl verpackt den Container und die Umgebung, in der der Container ausgeführt wird.

Auf dem Zielserver ausführen

cat time.tar | sudo docker import - time:v2 //Importieren Sie den Container und importieren Sie ihn, um ein Image zu erhalten. Verwenden Sie docker run mit dem Befehl /bin/bash
Sie können den vorherigen Container inklusive Dateien abrufen

Starten Sie das Bild

sudo docker run -itd --name import_test -p 8087:8080 Zeit:v2 /bin/bash 

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

speichern / laden

sudo docker save web > web.tar
sudo docker load < web.tar

Dies ist das Ende dieses Artikels über Docker-Zeitzonenprobleme und Datenmigrationsprobleme. Weitere Informationen zu Docker-Zeitzonenproblemen und Datenmigrationsproblemen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vorgang zur Zeitzonenanpassung im Docker-Container
  • So gehen Sie mit Zeitzonenproblemen in Docker um
  • Der erstellte Docker-Container: Zeitanzeigefehler/Datumsfehler/Zeitzonenfehler
  • Detaillierte Erläuterung zum Ändern der Docker-Zeitzone und allgemeiner Docker-Befehle
  • So lösen Sie das Problem der Zeitzone und Zeitsynchronisierung des Docker-Containers
  • Der Unterschied zwischen zwei Möglichkeiten zum Erstellen eines Docker-Images und Starten des Containers (Zusammenfassung)
  • Problem mit Zeitzonenfehler im Docker-Container

<<:  Eine kurze Diskussion über die Matching-Regeln von Host und Benutzer, wenn Mysql eine Verbindung zur Datenbank herstellt

>>:  Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Artikel empfehlen

Ein Beispiel für die Berechnungsfunktion calc in CSS im Website-Layout

calc ist eine Funktion in CSS, die zum Berechnen ...

So verwenden Sie MQTT im Uniapp-Projekt

Inhaltsverzeichnis 1. Referenz-Plugins im Uniapp ...

Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host

Vorwort Beim Einsatz von Docker in einer Produkti...

Zusammenfassung der Wissenspunkte zum Linux-Datumsbefehl

Verwendung: Datum [Optionen]... [+Format] oder: D...

Codeanalyse von Benutzervariablen in MySQL-Abfrageanweisungen

Im vorherigen Artikel haben wir die MySQL-Optimie...

Welche Codes sollte ich beherrschen, wenn ich Webdesign lerne?

In diesem Artikel werden einige der Techniken ausf...

Detaillierte Analyse mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Führende Fuzzy-Abfragen können keinen Index ve...

Umfassendes Verständnis von HTML-Formularelementen

Wie unten dargestellt: XML/HTML-CodeInhalt in die...

Lösung für das Problem, dass der Docker-Container nicht gestoppt werden kann

Die Lösung lautet wie folgt: 1. Container löschen...

So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit

Beim Erstellen einer Datenbank und Schreiben eine...

Vue implementiert Countdown-Funktion

In diesem Artikelbeispiel wird der spezifische Co...