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

MySql schnelles Einfügen von zig Millionen großen Datenbeispielen

Im Bereich der Datenanalyse sind Datenbanken unse...

Beispiel zum Ändern des Zeilenabstands einer HTML-Tabelle

Bei der Verwendung von HTML-Tabellen müssen wir m...

Beispiel für die Erschöpfung der MySQL-Auto-Increment-ID

Anzeigedefinitions-ID Wenn die in der Tabelle def...

So erstellen Sie eine my.ini-Datei im MySQL 5.7.19-Installationsverzeichnis

Im vorherigen Artikel habe ich das ausführliche T...

Analyse von Beispielen für MySQL-Benutzerverwaltungsvorgänge

Dieser Artikel beschreibt die MySQL-Benutzerverwa...

MySQL sollte niemals Update-Anweisungen wie diese schreiben

Inhaltsverzeichnis Vorwort Ursache Phänomen warum...

So installieren Sie Nginx an einem bestimmten Ort im Centos-System

Wie installiere ich Nginx an einem bestimmten Ort...

So verwenden Sie worker_threads zum Erstellen neuer Threads in nodejs

Einführung Wie im vorherigen Artikel erwähnt, gib...

js Promise-Methode zur gleichzeitigen Steuerung

Inhaltsverzeichnis Frage Hintergrund Idee & U...

Javascript verwendet das Integritätsattribut zur Sicherheitsüberprüfung

Inhaltsverzeichnis 1. Dateien mit Skript-Tags imp...