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.
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 nginxVérifiez que votre conteneur est en cours d’exécution, ainsi que le nom de votre conteneur, à l’aide de cette commande.
docker psNous pouvons maintenant utiliser la commande suivante pour déterminer l’adresse IP de notre conteneur NGINX.
docker inspect -f "{{ .NetworkSettings.IPAddress }}" nginxDans 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.2Si 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/bashEnsuite, installez SSH dessus. Dans cet exemple, nous utilisons
aptpackage manager, mais vous devrez peut-être adapter la commande si votre conteneur utilise un autre gestionnaire de packages.apt update && apt -y install openssh-serverEnsuite, configurez le conteneur afin que nous puissions nous connecter au compte racine via SSH.
echo "PermitRootLogin yes" >> /etc/ssh/sshd_configN’oubliez pas de changer le mot de passe root pour pouvoir vous connecter.
passwdEnfin, démarrez le service SSH sur le conteneur.
/etc/init.d/ssh startVous 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
Affichage des conteneurs Docker en cours d’exécution sur notre système
Ici, nous déterminons l’adresse IP du conteneur Docker dans lequel nous voulons SSH
À 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.
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.



