TP1 : Premier container - PasRP-Theo/Admin-II GitHub Wiki

Auteurs

  • Théo
  • Barish
  • Date de réalisation : 03/02/2025

1. Premier container

1.1. Hello World

Démarrer un premier container avec l'image officielle hello-world :

docker run hello-world

1.2. Observer un container

Lister les containers :

docker ps -a

Informations sur le container :

  • ID : 5c1dbd498a20
  • Nom : gifted_chaum
  • État : Exited
  • Image : hello-world
  • Commande exécutée : /hello

1.3. Gestion des images

Lister les images disponibles :

docker images

Informations observées :

  • REPOSITORY : Nom de l'image
  • TAG : Version de l'image
  • IMAGE ID : Identifiant unique
  • CREATED : Date de création
  • SIZE : Taille de l'image

Supprimer une image Docker :

docker rmi <nomImage>

2. Utiliser un container

2.1. Interagir avec un container

Lancer un container en mode interactif :

docker run -it <nomImage> /bin/bash

Explication des options :

  • -i : Mode interactif
  • -t : TTY (terminal interactif)

Vérification des processus actifs dans le container :

ps aux

Utilisateur connecté :

whoami

Test de connectivité Internet :

ping -c 4 google.com

2.2. Inspecter un container

Obtenir l'adresse IP du container :

docker inspect <containerID> | grep -i "IPAddress"

Vérifier les ports ouverts :

docker inspect <containerID> | grep -i "ports"

2.3. Faire tourner un service dans un container

Vérifier les ports mappés :

docker inspect <containerID> | grep -i "port"

Exemple avec Nginx :

docker run -d -p 80:80 nginx

Cela expose le port 80 du container sur le port 80 de l'hôte.


3. Construire des images

3.1. Figer un container

Créer une image à partir d'un container en cours d'exécution :

docker container commit <containerID> <nom-image>

3.2. Créer une image avec un Dockerfile

Exemple de Dockerfile :

FROM nginx:latest
COPY index.html /usr/share/nginx/html/

Construire l'image :

docker build -t mon-nginx .

4. Exercices récapitulatifs

4.1. Démarrer un serveur Web Apache

Dockerfile :

FROM httpd:latest
COPY ./myconfig.conf /usr/local/apache2/conf/httpd.conf

Configurer les virtual hosts dans httpd.conf :

Listen 8080
<VirtualHost *:8080>
    DocumentRoot /usr/local/apache2/htdocs/
</VirtualHost>

Démarrer le container :

docker run -d -p 80:80 -p 8080:8080 mon-apache

4.2. Lancer un résolveur Bind

Exécuter Bind9 en container :

docker run -d --name my-bind9 -p 1053:53/udp -p 1053:53/tcp ubuntu/bind9

Tracer le trafic avec Wireshark pour vérifier la résolution DNS.

4.3. Container avec script Python

Dockerfile :

FROM python:latest
ADD script.py .
CMD python3 script.py

script.py :

from datetime import datetime
now = datetime.now()
print(f"Nous sommes le {now.date()} à {now.time()}")

Démarrer le container :

docker run --name test test
⚠️ **GitHub.com Fallback** ⚠️