[LINUX] Comment gérer l'erreur selon laquelle le conteneur MySQL de Docker ne démarre pas sur Docker Toolbox

Aperçu

un événement

Lorsque j'ai essayé de lancer un conteneur Docker exécutant MySQL avec docker-compose, le conteneur a redémarré à plusieurs reprises pour toujours. Notez ici la solution à ce problème.

Au fait, j'ai eu ce problème lors de l'utilisation de Docker Toolbox sur Windows, mais cela semble peu probable (probablement) dans d'autres environnements.

paramètres pour docker-compose.yml

Les paramètres de la partie de docker-compose.yml où ce problème se produit sont les suivants.

  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

Aucun réglage spécial n'est fait, juste les réglages minimum nécessaires basés sur l'image de mysql: 5.7.

approche

Exécutez --innodb-use-native-aio = 0 dans le conteneur lancé. Donc, docker-compose.yml ressemble à ceci:

  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 # <-cette!

Pourquoi cela résout

Le Document MySQL officiel a la description suivante.

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 (moteur de base de données pour MySQL) est configuré pour utiliser les E / S asynchrones Linux (AIO natif) par défaut, mais ce comportement peut être changé avec l'option ʻinnodb_use_native_aio`.

Cette fois, j'exécutais le conteneur sous Windows à l'aide de Docker Toolbox, mais dans ce cas, cette E / S asynchrone n'est pas disponible, il semble donc qu'une erreur s'est produite et le redémarrage a été répété. Par conséquent, comme indiqué dans la partie citée ci-dessus de la documentation officielle, l'option ʻinnodb_use_native_aio` doit être définie pour ne pas utiliser les E / S asynchrones pour éviter ce problème.

À propos du redémarrage du conteneur

Le conteneur redémarre car j'ai écrit restart: always dans docker-compose.yml. Sinon, le conteneur tombera normalement.

Recommended Posts

Comment gérer l'erreur selon laquelle le conteneur MySQL de Docker ne démarre pas sur Docker Toolbox
Comment gérer le problème de l'échec de la construction de pandas 1.1.0 ou version ultérieure sur Alpine Linux
Comment gérer le phénomène que Python (notebook Jupyter) exécuté sur WSL devient abandonné
Comment traiter l'erreur "Impossible de charger le module" canberra-gtk-module "qui apparaît lorsque vous exécutez OpenCV
Comment résoudre le problème de l'échec de la construction lorsque CI / CD de Python Function avec AWS Amplify
[Python] Comment gérer l'erreur de lecture pandas read_html
[systemd] Comment faire face au problème que fancontrol ne fonctionne pas après la suspension
[AWS] Comment gérer l'erreur "Point de code non valide" dans CloudSearch
Une histoire sur la façon de traiter le problème CORS
Comment démarrer la première projection
[VLC] Comment gérer le problème de ne pas être au premier plan pendant la lecture
Comment résoudre le problème selon lequel APL ne démarre pas après le transfert vers l'appareil réel sur Kivy-iOS
Comment gérer le problème du déplacement du répertoire actuel lorsque Python est exécuté depuis Atom
Lorsque WSL Distro ne démarre pas (Erreur: «WslRegisterDistribution a échoué avec l'erreur: 0x800706be.»)
Comment gérer les données déséquilibrées
Comment gérer l'erreur DistributionNotFound
Démarrez la dernière odo avec 2 commandes à l'aide de Docker Desktop pour Windows
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
[AWS] Comment gérer WordPress "Une erreur s'est produite lors du recadrage d'une image."
Connectez-vous au conteneur MySQL de Docker depuis Flask
Connectez-vous à MySQL avec Python dans Docker
Comment gérer les erreurs de compatibilité d'énumération
Comment gérer le problème de déformation des caractères japonais lors de la sortie de journaux à l'aide du formateur de journaux JSON
[Python] Comment gérer l'erreur d'instance is "is instance () arg 2 doit être un type ou un tuple de types"
Comment gérer "^ [[A ^ [[B ^ [[C ^ [[D"]] en appuyant sur la touche de direction lors de l'exécution de python sur mac
Comment installer python3 avec docker centos
Comment publier un blog sur Amazon S3 avec le moteur de blog statique `` Pélican '' pour Pythonista
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
Comment traiter l'erreur "Aucun module nommé" "" dans Jupyter Notebook | Installer avec! Pip!
Comment exécuter une application Django sur un conteneur Docker (environnement de développement et de production)
Liste de contrôle pour éviter de transformer les éléments de array of numpy avec for
[AWS] Comment gérer Wordpress "La réponse n'est pas la bonne réponse JSON"
Résolvez une erreur qui apparaît sans définir un utilisateur après la DLing mysql avec MAC
Comment gérer les fuites de mémoire dans matplotlib.pyplot
Comment gérer les erreurs en frappant pip ②
Comment supprimer le journal avec Docker, ne pas collecter le journal
Stratégie sur la façon de monétiser avec Python Java
ne peut pas décaper. Comment gérer les objets Annoy
Comment gérer les erreurs d'exécution dans subprocess.call
Comment gérer le module 'Sensorflow' n'a aucun attribut '
Comment installer OpenGM sur OSX avec macports
Introduction à Python avec Atom (en route)
Comment entraîner Kaldi avec JUST Corpus
Connectez-vous à MySQL avec Python sur Raspberry Pi
Comment filtrer les clés externes qui peuvent être sélectionnées sur l'écran d'administration de Django
Comment traiter l'erreur "Erreur de type: Aucune signature correspondante trouvée" lors de l'utilisation de pandas fillna
mong - J'ai essayé de porter le code qui génère de manière aléatoire le nom du conteneur Docker vers Python -
Un mémo sur la façon de surmonter le problème difficile de la capture d'effets avec l'IA