Présentation
Docker est un utilitaire qui vous permet de créer un conteneur pour exécuter des applications. Un conteneur Docker est une machine virtuelle entièrement contenue.
Ce guide vous montrera trois méthodes pour SSH dans un conteneur Docker et exécuter des commandes.
Prérequis
- Un système Linux exécutant Docker
- Conteneurs préconfigurés chargés et en cours d'exécution
- Accès à une fenêtre de terminal/invite de commande (Ctrl +Alt +T ou Ctrl +Alt +F2 )
- Un compte utilisateur avec sudo privilèges
Méthode 1 :Utiliser docker exec pour exécuter des commandes dans un conteneur Docker
Le docker exec
La commande exécute une commande spécifiée dans un conteneur déjà en cours d'exécution. Vous pouvez l'utiliser pour vous connecter en SSH à un conteneur Docker en créant un bash shell (un shell où vous pouvez taper des commandes).
La syntaxe de base pour utiliser docker exec
exécuter une commande dans des conteneurs est :
docker exec [options] [container] [command]
Commencez par extraire une image Docker si vous ne l'avez pas déjà fait. Par exemple, vous pouvez charger Nginx :
sudo docker pull nginx
Ensuite, exécutez l'image :
sudo docker run ––name nginx–test –d nginx
Répertoriez tous les conteneurs en cours d'exécution à vérifier :
sudo docker ps
Vous devriez maintenant voir votre image nginx-test chargée.
Pour obtenir l'accès et exécuter des commandes dans ce conteneur Docker, saisissez ce qui suit :
sudo docker exec –it nginx-test /bin/bash
Maintenant, vous êtes connecté au nginx-test récipient. Par conséquent, toutes les commandes que vous entrez seront exécutées dans ce conteneur. Le –i
l'option spécifie interactif , et le –t
permet un type de terminal interface.
Méthode 2 :Utilisez la commande docker attach pour vous connecter à un conteneur en cours d'exécution
Le docker attach
La commande lie une entrée, une sortie et un flux d'erreurs locaux à un conteneur. Par défaut, il se lance dans un bash coque . Pour vous connecter à un conteneur en cours d'exécution, saisissez ce qui suit :
sudo docker attach container_Name
Dans l'exemple ci-dessous, le système se connectera au nginx-test conteneur :
sudo docker attach nginx-test
Une fois la commande exécutée, vous travaillerez dans le conteneur. Toutes les commandes que vous exécutez affecteront l'environnement Docker virtuel.
Méthode 3 :Utiliser SSH pour se connecter à un conteneur Docker
Vous pouvez vous connecter à un conteneur Docker en utilisant SSH (Secure Shell). Normalement, SSH est utilisé pour se connecter à distance via un réseau à un serveur. La technologie fonctionne de la même manière lors de la connexion à un conteneur Docker virtuel sur votre système.
Étape 1 :Activer SSH sur le système
Commencez par installer et activer le service SSH :
Activer SSH sur Ubuntu 18.04 :
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
Activer SSH sur CentOS 7 :
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
Étape 2 :Obtenir l'adresse IP du conteneur
Obtenez l'adresse IP du conteneur à l'aide de docker inspect
commande et filtrer les résultats.
Pour les moteurs Docker modernes, utilisez la commande :
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
Pour les moteurs Docker plus anciens, exécutez :
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
Le système affichera l'adresse IP comme indiqué dans l'image ci-dessus.
Étape 3 :SSH dans le conteneur Docker
Envoyez un ping à l'adresse IP pour vous assurer qu'elle est disponible :
ping –c 3 172.17.0.2
Utilisez l'outil SSH pour vous connecter à l'image :
ssh [email protected]
Le système doit demander un mot de passe à l'utilisateur root pour ce conteneur. S'il indique Connexion refusée , le conteneur n'est probablement pas provisionné pour SSH. Si l'invite change, vous êtes maintenant connecté via SSH et pouvez exécuter des commandes dans le conteneur.