Fermer

avril 22, 2021

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 =
    • env-wordpress.txt
      • WORDPRESS_DB_HOST =
      • WORDPRESS_DB_USER = wpress
      • WORDPRESS_DB_PASSWORD =
      • WORDPRESS_DB_NAME = WordPress

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

  • Créer, démarrer et exécuter un conteneur WordPress détaché
    • 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"
  • Arrêter le conteneur
  • Créez, démarrez et exécutez un conteneur WordPress détaché lié au conteneur de base de données
    • 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
  • Terminer l'assistant d'installation
  • Voir le site
  • Valider le contenu de la base de données
    • 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
  • Inspecter le conteneur MySQL
    • 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}}
  • Inspectez le conteneur wordpresscms2
    • docker inspecte wordpresscms2
      • Dans la section des liens, notez que le conteneur mysql est répertorié
        • HostConfig: {Liens: {mysqldb: / wordpresscms2 / mysqldb}}
  • Arrêtez les conteneurs
    • docker stop mysqldb wordpresscms2
  • Démarrez le conteneur WordPress pendant que le conteneur de base de données est arrêté
    • 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»
  • Arrêtez et retirez les conteneurs
    • 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}}
    • 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 = :
    • 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
    • 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