Als ich gestern ein Projekt schrieb, musste ich die abgeleitete Version von MySQL, Percona, verwenden, also wollte ich Docker verwenden, um es zu installieren. Infolgedessen bin ich die ganze Nacht in die Grube getreten und habe es heute Morgen endlich gelöst. Jetzt dokumentieren Sie es hier. Geben Sie nach dem Pullen Docker-Images ein, um alle Images anzuzeigen. Die Anzeige ist normal: Anschließend erstelle ich mit folgendem Befehl einen Container (keine Zeilenumbrüche bei der Ausführung verwenden): docker erstellen --name percona -v /data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:lates Dieser Befehl bedeutet, dass ich einen Container mit dem Namen „percona“ erstelle, dann mein lokales Verzeichnis „/data/mysql-data“ dem Verzeichnis „/var/lib/mysql“ im Docker-Container zuordne und Port 3306 angebe, dann das Passwort des Root-Benutzers der Datenbank auf „root“ setze und das letzte „percona:latest“ die Version angibt, die ich oben abgerufen habe. Da die Datenbank im Docker-Container nur ein Spiegel ist, kann man davon ausgehen, dass sie nicht wirklich existiert. Der Zweck der Zuordnung zu meinem lokalen Verzeichnis besteht darin, dass die von Docker im Verzeichnis /var/lib/mysql gespeicherten Daten synchronisiert und in meinem lokalen Verzeichnis /data/mysql-data gespeichert werden können. Dies stellt sicher, dass die Daten nicht verloren gehen, und erleichtert meine lokalen Vorgänge. Wenn Sie die Befehlsparameter nicht verstehen, können Sie die offizielle Dokumentation lesen oder nach einem Docker-Video-Tutorial suchen, das Erklärungen enthält. Dann starte ich diesen Container, docker start percona. Nach dem Start frage ich alle laufenden Container docker ps ab, und dann gibt es ein Problem: Es ist leer, das heißt, es werden keine laufenden Container gefunden... Dann habe ich alle Container geprüft, einschließlich der laufenden und der nicht laufenden. docker ps -a zeigt Folgendes: Es stellte sich heraus, dass der Port nicht erfolgreich gebunden war und deshalb nicht ausgeführt wurde! Bei jeder Ausführung wurde er automatisch beendet. Zu diesem Zeitpunkt habe ich die Docker-Protokolle überprüft und den Befehl „Docker-Protokolle Container-ID“ eingegeben, der Folgendes anzeigte: Hinweis: 71 sind hier die ersten beiden Ziffern der Container-ID dieses Containers. Docker unterstützt diese vereinfachte Schreibweise. Der Protokollfehler besagt, dass ich keine Berechtigung zum Erstellen und Schreiben in das Verzeichnis /var/lib/mysql im Container habe. docker run -ti --rm --entrypoint="/bin/bash" percona -c "whoami && id" Mit diesem Befehl können Sie den Besitzer des Containers anzeigen. Er wird wie folgt angezeigt: Geben Sie dann ein (ohne Zeilenumbrüche): docker run -ti --rm -v /data/mysql-data:/var/lib/mysql --entrypoint="/bin/bash" percona -c "ls -la /var/lib/mysql" Dieser Befehl wird verwendet, um den Besitzer dieses Verzeichnisses beim Zuordnen eines lokalen Datenträgers anzuzeigen. Das ist der Grund. Deshalb wird ein Berechtigungsfehler gemeldet, wenn der MySQL-Benutzer auf das Verzeichnis im Docker zugreift! Denn der Besitzer des lokalen Mapping-Verzeichnisses ist der Root-Benutzer und der Besitzer des Verzeichnisses /var/lib/mysql im Docker-Container ist der MySQL-Benutzer mit der UID 999! Das Problem ist gelöst! Ich habe eine ganze Nacht verschwendet. Ich muss sagen, dass ich mein Wissen über die Berechtigungskontrolle unter Linux vertiefen muss! Dies ist das Ende dieses Artikels über die Fallstricke von Verzeichnisberechtigungen, wenn Docker Container erstellt. Weitere Informationen zu Verzeichnisberechtigungen, wenn Docker Container erstellt, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: So installieren Sie eine PHP7 + Nginx-Umgebung unter CentOS6.6
>>: Neue Funktionen in MySQL 8.0: Hash Join
Wie in der Abbildung gezeigt: Aber bei der Anzeig...
1. Dreieck Rahmeneinstellungen Code: Breite: 300p...
Inhaltsverzeichnis Ermitteln Sie, ob ein Datensat...
vue-router hat zwei Modi Hash-Modus Verlaufsmodus...
Viele Freunde wollten schon immer wissen, wie man...
In diesem Artikelbeispiel wird der spezifische Co...
1. Hintergrund Wir führen von Zeit zu Zeit intern...
In diesem Artikel wird die Erstellung einer USB-S...
Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...
In diesem Artikelbeispiel wird der spezifische Co...
Webseiten enthalten sehr komplexe HTML-Strukturen...
Standardmäßig wird die Konfiguration /etc/default...
Einführung in Nginx Nginx ist ein leistungsstarke...
einführen Ein Diagramm ist eine grafische Darstel...
Schauen wir uns zunächst den GIF-Vorgang an: Fall...