Recherche de site Web

Comment se connecter au conteneur Docker via ssh


Après avoir installé Docker sur Fedora, AlmaLinux, Manjaro ou une autre distribution, il est temps d’installer plus de conteneurs. Une fois qu’un conteneur Docker est opérationnel sur un système Linux, l’une des choses que vous devrez probablement faire est d’exécuter des commandes à l’intérieur du conteneur. Cela vous permet d’utiliser le conteneur de la même manière que vous le feriez pour une machine physique, sauf que Docker a déjà effectué la plupart des démarches de configuration pour nous.

Il existe déjà deux commandes disponibles qui nous permettent d’exécuter des commandes sur un conteneur Docker. La première est docker exec, et la seconde, qui nous permet de l’attacher à un conteneur en cours d’exécution, est docker attach. Ces commandes suffisent généralement, mais vous pouvez vous retrouver dans un scénario où vous préféreriez utiliser SSH pour vous connecter au conteneur Docker et le gérer.

Tous les conteneurs Docker ne sont pas configurés pour exécuter SSH. Normalement, les conteneurs Docker sont très légers et programmés pour ne faire qu’une seule chose. Cependant, certains conteneurs Docker autorisent SSH, ce qui peut faciliter la gestion du conteneur. Dans ce guide, nous allons voir comment se connecter à un conteneur Docker via SSH à partir du système hôte sur la ligne de commande Linux.

Dans ce tutoriel, vous allez apprendre :

  • Comment se connecter à un conteneur Docker en cours d’exécution via SSH

Connexion à un conteneur Docker en cours d’exécution via SSH sous Linux

Se connecter au conteneur Docker via SSH

Pour cet exemple, nous avons déjà installé Docker et une image NGINX à l’aide de la commande docker pull nginx. Suivez les instructions étape par étape ci-dessous pour voir comment déterminer l’adresse IP du conteneur, puis utilisez la commande SSH pour vous connecter au conteneur en cours d’exécution.

  1. Tout d’abord, le conteneur Docker doit être en cours d’exécution. Assurez-vous que vous l’avez déjà démarré à l’aide de la commande suivante. Notez une fois de plus que nous utilisons une image NGINX, mais vous pouvez substituer le nom de votre propre image dans cette commande et les commandes futures.

    docker run --name nginx -d nginx
    
  2. Vérifiez que votre conteneur est en cours d’exécution, ainsi que le nom de votre conteneur, à l’aide de cette commande.

    docker ps
    
  3. Affichage des conteneurs Docker en cours d’exécution sur notre système

  4. Nous pouvons maintenant utiliser la commande suivante pour déterminer l’adresse IP de notre conteneur NGINX.

    docker inspect -f "{{ .NetworkSettings.IPAddress }}" nginx
    
  5. Ici, nous déterminons l’adresse IP du conteneur Docker dans lequel nous voulons SSH

  6. Dans notre cas, le conteneur NGINX a une adresse IP de 172.17.0.2. Nous pouvons maintenant tenter de nous connecter à cette adresse IP via SSH et le compte root.

    ssh root@172.17.0.2
    
  7. À ce stade, soit vous vous connecterez avec succès au conteneur en cours d’exécution, soit vous obtiendrez une erreur « connexion refusée ». Dans le cas d’une erreur, procédez comme suit pour configurer un serveur SSH sur le conteneur.

  8. Si SSH ne fonctionne pas, nous devons nous assurer que le logiciel est installé sur le conteneur. Connectez-vous au conteneur à l’aide de la commande suivante.

    docker exec -it nginx /bin/bash
    
  9. Ensuite, installez SSH dessus. Dans cet exemple, nous utilisons apt package manager, mais vous devrez peut-être adapter la commande si votre conteneur utilise un autre gestionnaire de packages.

    apt update && apt -y install openssh-server
    
  10. Ensuite, configurez le conteneur afin que nous puissions nous connecter au compte racine via SSH.

    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    
  11. N’oubliez pas de changer le mot de passe root pour pouvoir vous connecter.

    passwd
    
  12. Enfin, démarrez le service SSH sur le conteneur.

    /etc/init.d/ssh start
    
  13. Vous pourrez maintenant utiliser SSH à partir de la machine hôte en spécifiant l’adresse IP que vous avez déterminée précédemment et en utilisant le mot de passe racine pour lequel vous venez de configurer le mot de passe.

    ssh root@172.17.0.2
    
  14. Nous pouvons maintenant réussir à SSH dans le conteneur Docker

C’est tout ce qu’il y a à faire. Vous pouvez maintenant vous connecter à votre conteneur en cours d’exécution via SSH pour exécuter des commandes et le gérer. Bien sûr, la méthode d’utilisation de la commande docker exec devrait continuer à fonctionner également, et peut accomplir à peu près la même chose.

Réflexions finales

Dans ce guide, nous avons vu comment se connecter à un conteneur Docker en cours d’exécution à partir du système hôte via SSH. Docker nous offre déjà plusieurs façons de nous connecter à un conteneur, mais avoir la possibilité de SSH dans des conteneurs peut être intéressant dans certaines situations. Le problème, c’est que la plupart des conteneurs n’ont pas encore installé SSH, car ils sont normalement configurés avec la configuration minimale requise. Cela nécessite quelques étapes supplémentaires de notre part, mais comme vous l’avez vu ici, ce n’est pas si difficile à faire.

Articles connexes: