Skip to content

Windows Docker MySQL Database

Guillaume TUEBOU FOKO edited this page Mar 10, 2015 · 41 revisions

Gestion d'une base de données MySQL container avec les outils d'administration installées sur une machine hôte Windows

L’idée est d’utiliser les outils d’administration installés sous Windows 8.1 pour exploiter un server de données MySQL distant, empaqueté dans un container. De manière générale, cette procédure pourra permettre de manière analogue, de configurer une communication entre la machine hôte Windows et un container docker, ce via Boot2docker. Boot2docker est une Machine Virtuelle ultra légère, basée sur Virtual Box.

2- Exécution de shell docker

  • Une fois l’installation terminée, vous devez exécuter Boot2docker à partir de votre machine hôte Windows
  • Boot2docker s'exécute automatiquement avec une connexion shell docker. Aussi, certaines informations (adresse IP de communication avec la machine hôte, la version de Docker utiliséeet, la version de Boot2docker installée,etc.) sont présentent sur cette fenêtre (Pas besoin d'un mot de passe).

Remarque: Autre connexion au shell docker

Le shell docker peut être exécuté avec toute autre connexion SSH à l’instar de Putty. Il suffit d'utiliser la configuration suivante: adresse IP obtenue en exécutant Boot2docker (192.168.59.103 pour notre cas) et par défaut le User_name = docker password=tcuser.

3- Manipulation d’un container MySQL

Création d’images MySQL à partir du Dockerfile MySQL officiel

Elle se fait en exécutant dans le shell docker (à partir de Boot2docker ou de Putty) la commande suivante : docker@boot2docker:-$ docker pull mysql Docker télécharge ainsi l’image officielle de MySQL . Pour plus d’information, cliquer ici.

Pour vérifier l’existence de l’image MySQL , exécutant la commande suivante : docker@boot2docker:-$ docker images

Création d’un conteneur à partir d’une image MySQL

Elle s’effectue à partir de la commande suivante : docker@boot2docker:-$ docker run [--name <nom_container>] [ –p <IP_hôte>:<port_hôte>:<port_conteneur>/<protocol>] –e MYSQL_USER=<nom_user> -e MYSQL_PASSWORD=<password_user> -e MYSQL_DATABASE=<nom_database> -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql

Explication

  • docker run: Commande de création d’un nouveau container (obligatoire) ou lanceur de container,
  • --name : permet de donner un nom à notre conteneur. Si on le fait pas nous même, Docker en génèrera un à notre place ( ex:fevant_jones),
  • -p <IP_hôte>:<port_hôte>:<port_conteneur>/<protocol>:ici on indique grâce à la commande -p de docker qu’on souhaite que le port port_conteneur du conteneur (spécifié dans le Dockerfile à l'attribut EXPOSE = 3306) soit lié au port port_hôte de la machine hôte , à partir de l'adresse IP_hôte, à travers le protocol de communication . Par défaut, port_hôte = port_conteneur = EXPOSE= 3306 (à préciser) protocol = tcp (pas nécessaire de préciser).
  • –e MYSQL_USER: permet de créer un utilisateur de la base de données MySQL empaquetée dans le container MySQL,
  • -e MYSQL_PASSWORD:permet de créer le mot de passe d’un utilisateur de la base de données MySQL empaqueté dans le container MySQL,
  • -e MYSQL_ROOT_PASSWORD: permet de créer le mot de passe du super utilisateur root du container MySQL ainsi créé,
  • –d mysql : lance le conteneur de manière détachée (sans ça, notre terminal reste attaché, et si on fait ctrl+c, on arrête le conteneur).

Pour voir les containers qui tournent exécuter la commande suivante : docker@boot2docker:-$ docker ps ou docker@boot2docker:-$ docker ps -a , l'option -a permet de voir les containers arrêter mais toujours présents.

Lancement d’un Shell dans un container existant :

docker@boot2docker:-$ docker exec -ti <container_name> bash.

Cette commande permet à docker d’accéder aux volumes partagés du container en exécution ou bien de forcer le redémarrage d’un container et d’attacher à un container en exécution

Remarque :

L’on peut lancer directement le shell à la création d’un container à partir de l’image

docker@boot2docker:-$ docker run –i –t --name <nom_container> -p <IP_hôte>:<port_hôte>:<port_conteneur>/<protocol> –e MYSQL_USER=<nom_user> -e MYSQL_PASSWORD=<password_user> -e MYSQL_DATABASE=<nom_database> -e MYSQL_ROOT_PASSWORD=<root_password> -d mysql bash ou plus simplement en général docker@boot2docker:-$ docker run –i –t <nom_image> bash. L'option –i signifie mode itératif et –t est un pseudo-terminal tty.

Applications

Création du container mysql_cont à partir de l'image officiel mysql

docker@boot2docker:-$ docker run --name mysql_cont -p 3306:3306 –e MYSQL_USER=mysql_user -e MYSQL_PASSWORD=mysql_user -e MYSQL_DATABASE=dbmysql1 -e MYSQL_ROOT_PASSWORD=admin -d mysql

Lancement du container mysql_cont en mode bash

docker@boot2docker:-$ docker exec -ti mysql_cont bash

NB:


Il est impérative de se rassurer que le container ait démarré avant de le lancer. Sinon il suffit d'exécuter la commande suivante pour le démarrer:

docker@boot2docker:-$ docker start mysql_cont


Remarque importante : Il n’existe pas actuellement d’hôte Docker natif pour les systèmes d’exploitation autres que Linux. Sous Windows ou Mac OS X, vous devez installer la VM ultra légère Boot2docker, basée sur Virtual Box. Dans cette situation, les conteneurs Docker ne s’exécutent pas directement au-dessus de l’OS mais au sein de la machine virtuelle Boot2docker.

À ce niveau, notre serveur de base de données MySQL (mysql_cont) est empaqueté dans le container mysql_cont et nous allons l'administrer à partir de la machine hôte (Windows). Ainsi, nous avons le choix des outils d’administration d’une base de données MySQL: MySQL Workbrenh, MySQL Administrator, etc. Nous avons choisi l’outil MySQL Workbrenh qui se télécharge ici.

4-Connexion au serveur de base de données MySQL mysql_cont à partir de la machine hôte

  • L’outil MySQL Workbrench s’installe facilement sur la machine hôte.
  • Lancez l’application MySQL Workbrenh et saisissez les informations nécessaires à la connexion.
    • Hostmane: c’est l’adresse obtenue lors du démarrage de Boot2docker (192.168.59.103),
    • Port: c’est le port d’écoute de machine hôte défini lors de la création du container (port_hôte=3306),
    • Username: Nom de l’utilisateur défini lors de la création du container (mysql_user), le super utilisateur étant root.
    • Le password (mysql_user) est renseigné dans la fenêtre suivante :

Nous pouvons dès lors administrer la base de données MySQL nommée mysql_cont à partir de la machine hôte: