[LINUX] So gehen Sie mit dem Fehler um, dass der MySQL-Container von Docker in der Docker Toolbox nicht gestartet werden kann

Überblick

Veranstaltung

Als ich versuchte, einen Docker-Container zu starten, auf dem MySQL mit Docker-Compose ausgeführt wird, wurde der Container wiederholt für immer neu gestartet. Notieren Sie sich hier die Lösung für dieses Problem.

Übrigens hatte ich dieses Problem bei der Verwendung von Docker Toolbox unter Windows, aber es scheint (wahrscheinlich) in anderen Umgebungen unwahrscheinlich.

Einstellungen für docker-compose.yml

Die Einstellungen des Teils von docker-compose.yml, in dem dieses Problem auftritt, sind wie folgt.

  db:
    image: mysql:5.7
    volumes: 
      - "/tmp/db/data:/var/lib/mysql"
      - "./db:/usr/src/db"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
      MYSQL_DATABASE: $MYSQL_DATABASE
      MYSQL_USER: $MYSQL_USER
      MYSQL_PASSWORD: $MYSQL_PASSWORD
    ports:
      - 3306:3306

Es werden keine speziellen Einstellungen vorgenommen, nur die minimal erforderlichen Einstellungen basierend auf dem Image von mysql: 5.7.

Ansatz

Führen Sie "--innodb-use-native-aio = 0" im gestarteten Container aus. Docker-compose.yml sieht also so aus:

  db:
    image: mysql:5.7
    volumes: 
      - "/tmp/db/data:/var/lib/mysql"
      - "./db:/usr/src/db"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD
      MYSQL_DATABASE: $MYSQL_DATABASE
      MYSQL_USER: $MYSQL_USER
      MYSQL_PASSWORD: $MYSQL_PASSWORD
    ports:
      - 3306:3306
     command: --innodb-use-native-aio=0 # <-Dies!

Warum das löst

Das offizielle MySQL-Dokument enthält die folgende Beschreibung.

InnoDB uses the asynchronous I/O subsystem (native AIO) on Linux to perform read-ahead and write requests for data file pages. This behavior is controlled by the innodb_use_native_aio configuration option, which applies to Linux systems only and is enabled by default.

InnoDB (Datenbankmodul für MySQL) verwendet standardmäßig asynchrone Linux-E / A (native AIO). Dieses Verhalten kann jedoch mit der Option innodb_use_native_aio geändert werden.

Dieses Mal habe ich den Container unter Windows mit Docker Toolbox ausgeführt, aber in diesem Fall ist diese asynchrone E / A nicht verfügbar. Es scheint also, dass ein Fehler aufgetreten ist und der Neustart wiederholt wurde. Daher sollte, wie in dem oben in der offiziellen Dokumentation zitierten Teil angegeben, die Option "innodb_use_native_aio" so eingestellt werden, dass keine asynchrone E / A verwendet wird, um dieses Problem zu vermeiden.

Informationen zum Neustart des Containers

Der Container wird neu gestartet, weil ich in docker-compose.yml "restart: always" geschrieben habe. Andernfalls fällt der Behälter normal.

Recommended Posts

So gehen Sie mit dem Fehler um, dass der MySQL-Container von Docker in der Docker Toolbox nicht gestartet werden kann
Problemumgehung für Pandas 1.1.0 und höher Build-Fehler unter Alpine Linux
Wie man mit dem Phänomen umgeht, dass Python (Jupyter Notebook) auf WSL ausgeführt wird, wird abgebrochen
Umgang mit dem Fehler "Fehler beim Laden des Moduls" canberra-gtk-module ", der beim Ausführen von OpenCV auftritt
Wie man mit dem Problem umgeht, dass die Erstellung fehlschlägt, wenn CI / CD von Python Function mit AWS Amplify
[Python] Umgang mit Pandas read_html Lesefehler
[systemd] Wie gehe ich mit dem Problem um, dass fancontrol nach dem Anhalten nicht funktioniert?
[AWS] Umgang mit dem Fehler "Ungültiger Codepunkt" in CloudSearch
Eine Geschichte über den Umgang mit dem CORS-Problem
So starten Sie die erste Projektion
[VLC] Wie man mit dem Problem umgeht, dass es während der Wiedergabe nicht im Vordergrund steht
So lösen Sie das Problem, dass APL nach der Übertragung auf das eigentliche Gerät unter Kivy-iOS nicht gestartet wird
So gehen Sie mit dem Problem um, dass das aktuelle Verzeichnis verschoben wird, wenn Python von Atom ausgeführt wird
Wenn die WSL-Distribution nicht gestartet werden kann (Fehler: "WslRegisterDistribution fehlgeschlagen mit Fehler: 0x800706be.")
Umgang mit unausgeglichenen Daten
Umgang mit dem DistributionNotFound-Fehler
Starten Sie das neueste Odo mit 2 Befehlen mit Docker Desktop für Windows
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
Umgang mit SSL-Fehlern beim Herstellen einer Verbindung zu S3 mit Python boto
[AWS] Umgang mit WordPress "Beim Zuschneiden eines Bildes ist ein Fehler aufgetreten."
Stellen Sie von Flask aus eine Verbindung zum MySQL-Container von Docker her
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Umgang mit Enum-Kompatibilitätsfehlern
Umgang mit dem Problem, dass japanische Zeichen bei der Ausgabe von Protokollen mit dem JSON-Protokollformatierer verstümmelt sind
[Python] Umgang mit dem is-Instanzfehler "is instance () arg 2 muss ein Typ oder ein Tupel von Typen sein"
Umgang mit "^ [[A ^ [[B ^ [[C ^ [[D"]] beim Drücken der Richtungstaste beim Ausführen von Python auf dem Mac
So installieren Sie Python3 mit Docker Centos
So veröffentlichen Sie ein Blog auf Amazon S3 mit der statischen Blog-Engine "Pelican" für Pythonista
Hinweise zum Implementieren des Schlüssels unter Amazon S3 mit Boto 3, Implementierungsbeispiel, Hinweise
So behandeln Sie den Fehler "Kein Modul mit dem Namen '' '" in Jupyter Notebook | Install with! Pip!
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
[AWS] Umgang mit Wordpress "Die Antwort ist nicht die richtige JSON-Antwort."
Beheben Sie einen Fehler, der auftritt, ohne einen Benutzer nach dem DLing von MySQL mit MAC festzulegen
Umgang mit Speicherlecks in matplotlib.pyplot
Umgang mit Fehlern beim Auftreffen auf pip pip
So löschen Sie ein Protokoll mit Docker, nicht um ein Protokoll zu sammeln
Strategie zur Monetarisierung mit Python Java
Ich kann nicht nerven. Wie man mit nervigen Objekten umgeht
Umgang mit Laufzeitfehlern in subprocess.call
Der Umgang mit dem Modul'tensorflow 'hat kein Attribut' '
So installieren Sie OpenGM unter OSX mit Macports
Einführung in Python mit Atom (unterwegs)
Wie man Kaldi mit JUST Corpus trainiert
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
So filtern Sie die externen Schlüssel, die auf dem Django-Verwaltungsbildschirm ausgewählt werden können
Umgang mit dem Fehler "Typfehler: Keine übereinstimmende Signatur gefunden" bei Verwendung von pandas fillna
mong - Ich habe versucht, den Code, der zufällig den Containernamen von Docker generiert, nach Python zu portieren. -
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann