Docker Bootcamp – Lier plusieurs conteneurs

Bienvenue à nouveau dans Docker Bootcamp . Dans cet article, nous allons configurer plusieurs conteneurs et les lier afin qu'ils fonctionnent ensemble. Par exemple, vous pouvez avoir un conteneur pour un serveur de base de données et un autre pour un serveur Web hébergeant un système de gestion de contenu. N'oubliez pas que les conteneurs sont spécialisés et ne peuvent exécuter qu'un seul logiciel. Lier des conteneurs nous permet de créer un environnement logiciel complexe.
- run – Créer et démarrer un nouveau conteneur
Vous pouvez trouver une liste complète des commandes et tous les indicateurs disponibles sur https: //docs.docker .com / engine / reference / commandline / docker / .
run
docker run [options] image [command] [args…]
Sorties: ContainerID
–env-file | O | Lire dans un fichier de variables d'environnement | |
–link | O | Ajouter un lien vers un autre conteneur par nom |
Setup
- Afficher la page des détails de l'image pour la base de données MySql sur docker hub
- Afficher la page des détails de l'image pour le système de gestion de contenu WordPress sur le hub docker
- Créez un fichier de variables d'environnement pour MySQL et WordPress
- env-mysql.txt
- MYSQL_ROOT_PASSWORD =
- MYSQL_DATABASE = WordPress
- MYSQL_USER = wpress
- MYSQL_PASSWORD =
- MYSQL_ROOT_PASSWORD =
- env-wordpress.txt
- WORDPRESS_DB_HOST =
- WORDPRESS_DB_USER = wpress
- WORDPRESS_DB_PASSWORD =
- WORDPRESS_DB_NAME = WordPress
- WORDPRESS_DB_HOST =
- env-mysql.txt
Lier des conteneurs à l'aide du conteneur d'indicateur –link et exécuter une base de données.- docker run -d –env-file env-mysql.txt –name mysqldb mysql
- docker run -d –env-file env-wordpress.txt -p 8080: 80 –name wordpresscms wordpress
- Accédez à localhost: 8080
- Notez le message "Erreur lors de l'établissement d'une connexion à la base de données"
- Accédez à localhost: 8080
- docker run -d –env-file env-wordpress.txt –link mysqldb -p 8081: 80 –nom wordpresscms2 wordpress
- Accédez à localhost: 8081
- Notez que le programme d'installation de WordPress apparaît
- Accédez à localhost: 8081
- docker exec mysqldb mysqldump WordPress -u root -p
> wordpressdb.sql - Notez qu'il n'y a pas d'espace entre l'indicateur «-p» et le mot de passe
- Ici, nous utilisons le> pour rediriger la sortie vers un fichier nommé wordpressdb.sql
- Ouvrez le fichier pour voir que la base de données est remplie avec tableaux et données
- Vous devriez voir votre utilisateur dans la table wp_users
- docker inspecte mysqldb
- Dans les sections portbindings et ports, notez que les ports du conteneur ne sont pas exposés à l'hôte
- HostConfig: {PortBindings: {}}
- NetworkSettings: {Ports {3306 / tcp: null}}
- Dans les sections portbindings et ports, notez que les ports du conteneur ne sont pas exposés à l'hôte
- docker inspecte wordpresscms2
- Dans la section des liens, notez que le conteneur mysql est répertorié
- HostConfig: {Liens: {mysqldb: / wordpresscms2 / mysqldb}}
- Dans la section des liens, notez que le conteneur mysql est répertorié
- docker stop mysqldb wordpresscms2
- docker start wordpresscms2
- Notez le message «Réponse d'erreur du démon: impossible de créer un lien vers un conteneur non en cours d'exécution: / mysqldb AS / wordpresscms2 / mysqldb»
- docker rm -f mysqldb wordpresscms wordpresscms2
Lors de l'utilisation de l'indicateur –link, docker utilise son réseau de pont et d'autres fonctionnalités réseau internes pour permettre aux conteneurs de communiquer. En tant que tel, tous les conteneurs dépendants doivent être démarrés et disponibles en premier. C'est facile dans un petit exemple, mais peut facilement devenir compliqué dans un scénario plus complexe. Notez que l'utilisation de l'indicateur –link est obsolète et pourrait être supprimée d'une future version de docker ( https://docs.docker.com/network/links/ ).
Liez des conteneurs à l'aide des paramètres réseau
- Créer, démarrer et exécuter un conteneur de base de données détaché
- docker run -d –env-file env-mysql.txt –name mysqldb mysql
- Trouvez l'adresse IP du conteneur
- docker inspecte mysqldb
- L'adresse IP est répertoriée sous Réseaux: {bridge: {IPAddress}}
- docker inspecte mysqldb
- Modifier le fichier env-wordpress.txt
- Mettez à jour l'hôte de la base de données pour qu'il pointe vers l'adresse ip: port du conteneur mysql
- WORDPRESS_DB_HOST =
:
- WORDPRESS_DB_HOST =
- Mettez à jour l'hôte de la base de données pour qu'il pointe vers l'adresse ip: port du conteneur mysql
- Créer, démarrer et exécuter un conteneur WordPress détaché
- docker run -d –env-file env-wordpress.txt -p 8082: 80 –name wordpresscms wordpress
- Accédez à localhost: 8082
- Notez que le programme d'installation de WordPress apparaît
- Accédez à localhost: 8082
- docker run -d –env-file env-wordpress.txt -p 8082: 80 –name wordpresscms wordpress
- Arrêtez et retirez les conteneurs
- docker rm -f mysqldb wordpresscms
Rappelez-vous Partie 4 de cette série sur le réseautage? Par défaut, tous les conteneurs utilisent le type de réseau ponté et peuvent communiquer entre eux (si vous connaissez l'adresse IP du conteneur). Dans les prochains articles, j'explorerai comment rendre la liaison des conteneurs plus dynamique.
Source link