Traduction japonaise de Quick Reference for mysql on Docker Hub.
MySQL est la base de données open source la plus populaire au monde. Avec des performances, une fiabilité et une facilité d'utilisation éprouvées, MySQL est devenu le premier choix de base de données pour les applications Web couvrant la gamme complète des projets personnels et des sites Web, du commerce électronique et des services d'information. .. Il est également utilisé dans les propriétés Web telles que Facebook, Twitter, YouTube et Yahoo!. Pour plus d'informations sur MySQL Server et d'autres produits MySQL et les téléchargements associés, veuillez visiter www.mysql.com.
Le démarrage d'une instance MySQL est facile.
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
some-mysql
est le nom que vous attribuez au conteneur, my-secret-pw
est le mot de passe que vous avez défini pour l'utilisateur root MySQL et `` tag '' est la balise qui spécifie la version MySQL requise.
Consultez la liste ci-dessus pour les balises associées.
Connectez-vous à MySQL à partir du client de ligne de commande MySQL.
La commande suivante lance une autre instance de conteneur mysql et exécute le client de ligne de commande mysql sur le conteneur mysql d'origine afin que vous puissiez exécuter des instructions SQL sur l'instance de base de données.
$ docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
some-mysql
est le nom du conteneur mysql d'origine ( some-network
attaché au réseau Docker).
Cette image peut également être utilisée comme client pour des instances non-Docker ou des instances distantes.
$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
Consultez la documentation MySQL pour plus d'informations sur le client de ligne de commande MySQL.
stack.exemple de description yml
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Exécutez docker stack deploy -c stack.yml mysql '' (ou
docker-compose -f stack.yml up '') et attendez qu'il soit complètement initialisé http: // swarm-ip Accédez à: 8080, http: // localhost: 8080 ou http: // host-ip: 8080.
Vous pouvez exécuter la commande dans un conteneur Docker à l'aide de la commande `` docker exec ''. La ligne de commande suivante fournit un shell bash dans le conteneur mysql.
$ docker exec -it some-mysql bash
Les journaux sont disponibles à partir des journaux de conteneur de Docker.
$ docker logs some-mysql
Les paramètres par défaut de MySQL sont dans / etc / mysql / my.cnf ''. Cela peut inclure des répertoires supplémentaires tels que
/ etc / mysql / conf.d '' et / etc / mysql / mysql.conf.d ''. Vérifiez les fichiers et répertoires pertinents dans l'image mysql pour plus d'informations. Si
/ my / custom / config-file.cnf`` est le chemin et le nom du fichier de configuration personnalisé, vous pouvez démarrer le conteneur mysql comme suit (avec cette commande, seul le chemin du répertoire du fichier de configuration personnalisé est disponible: Veuillez noter qu'il est utilisé).
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
Cela permet à l'instance MySQL d'utiliser une combinaison des paramètres de démarrage de / etc / mysql / my.cnf '' et
/ etc / mysql / conf.d / config-file.cnf '', avec ce dernier paramètre Démarre un nouveau conteneur, some-mysql, qui a la priorité.
De nombreuses options de configuration peuvent être passées à mysqld sous forme d'indicateurs. Cela vous donne la flexibilité de personnaliser le conteneur sans avoir besoin d'un fichier `` cnf ''. Par exemple, si vous souhaitez modifier le codage et le classement par défaut de toutes les tables pour utiliser UTF-8 (utf8mb4), exécutez simplement la commande suivante:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Si vous souhaitez voir la liste complète des options disponibles, procédez comme suit:
$ docker run -it --rm mysql:tag --verbose --help
Vous pouvez ajuster la configuration de votre instance MySQL en passant une ou plusieurs variables d'environnement sur la ligne de commande docker run '' lorsque vous lancez l'image mysql. Notez qu'aucune des variables suivantes n'a d'effet si vous démarrez le conteneur dans un répertoire de données qui contient déjà une base de données. La base de données existante n'est pas modifiée à tout moment lorsque le conteneur est démarré. Pour la documentation des variables d'environnement que MySQL lui-même respecte, en particulier des variables comme
MYSQL_HOST`` qui sont connues pour causer des problèmes lorsqu'elles sont utilisées avec cette image, https://dev.mysql.com/ Voir aussi doc / refman / 5.7 / en / environment-variables.html.
MYSQL_ROOT_PASSWORD
Cette variable est obligatoire et spécifie le mot de passe défini pour le compte superutilisateur racine MySQL. Dans l'exemple ci-dessus, il est défini sur `` my-secret-pw ''.
MYSQL_DATABASE
Cette variable est facultative. Vous pouvez spécifier le nom de la base de données qui sera créée au démarrage de l'image. Si un utilisateur / mot de passe est spécifié (voir ci-dessous), cet utilisateur se verra accorder un accès superutilisateur à cette base de données (correspondant à `` GRANT ALL '').
MYSQL_USER, MYSQL_PASSWORD
Ces variables sont facultatives. Utilisé en combinaison pour créer un nouvel utilisateur et définir un mot de passe pour cet utilisateur. Cet utilisateur dispose des privilèges de superutilisateur (voir ci-dessus) pour la base de données spécifiée par la variable MYSQL_DATABASE. Les deux variables sont nécessaires pour créer un utilisateur. Notez que vous n'avez pas besoin d'utiliser ce mécanisme pour créer un superutilisateur root. Le superutilisateur root est créé par défaut avec le mot de passe spécifié dans la variable MYSQL_ROOT_PASSWORD.
MYSQL_ALLOW_EMPTY_PASSWORD
Ceci est une variable facultative. Le définir sur une valeur non vide, telle que `` oui '', permet au conteneur d'être démarré en tant qu'utilisateur root sans mot de passe.
Remarque: il n'est pas recommandé de définir cette variable sur `` oui '', sauf si vous comprenez vraiment ce que vous faites. Cela protège complètement votre instance MySQL et permet à quiconque d'obtenir un accès super-utilisateur complet.
MYSQL_RANDOM_ROOT_PASSWORD
Ceci est une variable facultative.
Définissez sur une valeur non vide telle que yes '' pour générer un mot de passe initial aléatoire pour l'utilisateur root (en utilisant
pwgen '').
Le mot de passe root généré est imprimé sur stdout (`` GENERATED ROOT PASSWORD: ...... '').
MYSQL_ONETIME_PASSWORD
Lorsque l'initialisation est terminée, il définit l'utilisateur root (pas l'utilisateur spécifié par [MYSQL_USER](# mysql_user-mysql_password)) comme expiré et force le changement de mot de passe lors de la première connexion. Ce paramètre est activé s'il existe une valeur non vide.
Remarque: cette fonctionnalité n'est prise en charge que dans MySQL 5.6 et versions ultérieures. L'utilisation de cette option dans MySQL 5.5 génère une erreur lors de l'initialisation.
MYSQL_INITDB_SKIP_TZINFO
Par défaut, le script de point d'entrée charge automatiquement les données de fuseau horaire requises par la fonction `` CONVERT_TZ () ''. Si ce n'est pas nécessaire, la spécification d'une valeur non vide désactivera la lecture du fuseau horaire.
Docker Secrets
Au lieu de passer des informations sensibles via des variables d'environnement, ajoutez _FILE
aux variables d'environnement ci-dessus afin que le script d'initialisation charge les valeurs de ces variables à partir des fichiers qui résident dans le conteneur. Je peux.
En particulier, cela peut être utilisé pour charger le mot de passe à partir du secret Docker stocké dans le fichier `` / run / secrets / <secret_name> ''.
Par exemple:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag
Actuellement, cela n'est pris en charge que pour les variables suivantes:
Lorsque le conteneur est démarré pour la première fois, une nouvelle base de données avec le nom spécifié est créée et initialisée avec les variables de configuration spécifiées.
Il exécute également des fichiers avec les extensions .sh '',
.sql '' et .sql.gz '' situés dans
/ docker-entrypoint-initdb.d ''.
Les fichiers sont exécutés par ordre alphabétique.
Vous pouvez facilement remplir le service mysql en montant un vidage SQL dans ce répertoire et en fournissant une image personnalisée avec les données fournies.
Par défaut, les fichiers SQL sont importés dans la base de données spécifiée par la variable MYSQL_DATABASE.
Remarque importante: il existe plusieurs façons de stocker les données utilisées par les applications exécutées dans des conteneurs Docker. Les utilisateurs de l'image mysql sont encouragés à se familiariser avec les options disponibles:
Laissez Docker gérer le stockage des données de la base de données en écrivant des fichiers de base de données sur des disques du système hôte à l'aide de sa propre gestion de volume interne. Il s'agit de la valeur par défaut et est simple et assez transparente pour l'utilisateur. L'inconvénient est que les outils et les applications qui s'exécutent directement sur le système hôte, c'est-à-dire en dehors du conteneur, peuvent être difficiles à trouver. Créez un répertoire de données sur le système hôte (en dehors du conteneur) et montez-le dans un répertoire visible de l'intérieur du conteneur. Cela place les fichiers de base de données dans un emplacement connu sur le système hôte, ce qui permet aux outils et aux applications du système hôte d'accéder facilement aux fichiers. L'inconvénient est que l'utilisateur doit s'assurer que le répertoire existe et que les autorisations de répertoire du système hôte et les autres mécanismes de sécurité sont correctement définis.
La documentation Docker est un bon point de départ pour comprendre les différentes options et variantes de stockage, et il existe plusieurs articles de blog et de forum qui discutent et conseillent dans ce domaine. Voici une brève description des étapes de base de la dernière option ci-dessus.
Créez un répertoire de données tel que / my / own / datadir
sur le volume approprié sur le système hôte.
Démarrez le conteneur mysql comme suit:
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
La partie -v / my / own / datadir: / var / lib / mysql
de la commande prend le répertoire / my / own / datadir
du système hôte sous-jacent vers le `` / var dans le conteneur. Monter en tant que / lib / mysql ''.
MySQL écrit les fichiers de données par défaut.
Il n'y aura pas de connexion tant que l'initialisation de MySQL n'est pas terminée.
S'il n'y a pas de base de données initialisée au démarrage du conteneur, une base de données par défaut sera créée.
Il s'agit d'un comportement attendu, mais cela signifie qu'il n'acceptera pas les connexions entrantes tant que l'initialisation n'est pas terminée.
Cela peut entraîner des problèmes lors de l'utilisation d'outils automatisés tels que docker-compose, qui lance plusieurs conteneurs en même temps.
Si l'application essayant de se connecter à MySQL ne gère pas le temps d'arrêt de MySQL ou attend que MySQL démarre avec succès, vous devez configurer une connexion et réessayer en boucle avant que le service ne démarre. ..
Voir WordPress ou Bonita pour un exemple d'une telle implémentation dans l'image officielle.
Si vous démarrez l'instance de conteneur mysql dans un répertoire de données qui contient déjà une base de données (en particulier, un sous-répertoire mysql
), omettez la variable $ MYSQL_ROOT_PASSWORD
de la ligne de commande d'exécution.
Même si la variable ci-dessus est spécifiée, elle sera ignorée et la base de données existante ne sera pas modifiée.
Vous devez exécuter mysqld si vous savez que les autorisations de répertoire sont déjà définies correctement (par exemple, si vous utilisez une base de données existante comme décrit ci-dessus), ou si vous souhaitez exécuter mysqld avec un UID / GID spécifique. Si tel est le cas, vous pouvez utiliser --user
pour appeler cette image.
Définissez sur n'importe quelle valeur (autre que root / 0) pour obtenir la connexion / configuration souhaitée.
$ mkdir data
$ ls -lnd data
drwxr-xr-x 2 1000 1000 4096 Aug 27 15:54 data
$ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
La plupart des outils habituels fonctionnent, mais leur utilisation peut être un peu compliquée pour vous donner accès au serveur mysqld. Un moyen simple de vérifier cela est d'utiliser `` docker exec '' et d'exécuter l'outil à partir du même conteneur comme suit:
$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
Pour la restauration des données.
Vous pouvez utiliser la commande docker exec '' avec l'indicateur
-i '' comme suit:
$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
Affichez les informations de licence pour le logiciel contenu dans cette image. Comme toutes les images Docker, il s'agit de dépendances directes ou indirectes sur d'autres logiciels qui peuvent être sous d'autres licences (telles que Bash dans la distribution de base) qui sont incluses dans le logiciel principal. Relation) peuvent également être incluses. Certaines informations de licence supplémentaires qui pourraient être découvertes automatiquement peuvent se trouver dans le répertoire `` mysql / '' du référentiel repo-info. En ce qui concerne l'utilisation d'une image pré-construite, il est de la responsabilité de l'utilisateur de l'image de s'assurer que l'utilisation de cette image est conforme aux licences pertinentes de tous les logiciels qu'elle contient.
Recommended Posts