Jenkins - 3.3 Lancer le conteneur distant et tester SSH
Il reste à relier le conteneur distant à Jenkins. Cette leçon ajoute le service remote_host au fichier docker-compose.yml, construit l'image et démarre le conteneur. La dernière étape teste la connexion SSH depuis le conteneur Jenkins.
Ajouter le service distant
Le service remote_host se déclare au même niveau que le service jenkins. Le conteneur porte le nom remote. L'image n'existe pas encore, elle doit donc être construite à partir d'un build.
Le contexte du build indique le dossier où se trouve le Dockerfile, ici le dossier centos7. Le service est relié au même réseau net que Jenkins, pour que les deux conteneurs communiquent.
remote_host:
container_name: remote
build: ./centos7
networks:
- net
Construire et lancer le conteneur
La commande docker-compose build construit l'image à partir du Dockerfile. Une fois l'image créée, elle apparaît dans la liste des images Docker.
La commande docker-compose up -d démarre ensuite le service. La commande docker ps confirme que le conteneur distant est en cours d'exécution.
docker-compose build
docker-compose up -d
docker ps
Tester la connexion depuis Jenkins
Le test se fait depuis le conteneur Jenkins, qui s'ouvre avec docker exec. Depuis ce conteneur, le nom remote_host est résolu grâce au réseau partagé.
La connexion se teste d'abord avec le mot de passe de remote_user. Ensuite, la clé privée remote est copiée dans le conteneur Jenkins, puis utilisée avec l'option -i : la connexion se fait alors sans mot de passe.
- Ouvrir le conteneur Jenkins avec docker exec.
- Se connecter en SSH à remote_host avec l'utilisateur remote_user.
- Copier la clé privée remote dans le conteneur Jenkins.
- Se connecter avec ssh -i remote, puis remote_user@remote_host.
En résumé
Le service remote_host est construit et lancé avec Docker Compose. Depuis le conteneur Jenkins, la connexion SSH fonctionne d'abord par mot de passe, puis par clé. Les deux conteneurs communiquent désormais sur le réseau net.
Points clés
- Le service remote_host utilise un build à partir du dossier centos7.
- Le réseau net relie Jenkins et le conteneur distant.
- docker-compose build crée l'image avant le démarrage.
- La clé privée permet une connexion sans mot de passe.
- Le test se fait depuis le conteneur Jenkins.
Questions fréquentes
Pourquoi un build est-il nécessaire ?
L'image remote_host n'existait pas encore. Le build la crée à partir du Dockerfile.
Pourquoi la connexion se teste-t-elle depuis le conteneur Jenkins ?
Les deux conteneurs partagent le réseau net, ce qui permet à Jenkins de joindre le nom remote_host. Hors de ce conteneur, ce nom n'est pas visible.
À quoi sert la clé privée ?
Elle prouve l'identité de la connexion. Avec elle, SSH ne demande plus de mot de passe.