← Semaine 12

Laboratoire : mes premiers conteneurs

Installer Docker, emprunter des images, construire les vôtres - et tout nettoyer sans laisser de trace.
0 / 6 missions accomplies

Sur votre VPS ou votre poste Ubuntu, avec le dépôt officiel :

prenom@serveur:~$ sudo apt-get update prenom@serveur:~$ sudo apt-get install -y ca-certificates curl prenom@serveur:~$ sudo install -m 0755 -d /etc/apt/keyrings prenom@serveur:~$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc prenom@serveur:~$ sudo chmod a+r /etc/apt/keyrings/docker.asc prenom@serveur:~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null prenom@serveur:~$ sudo apt-get update prenom@serveur:~$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Puis le test et la libération du sudo :

prenom@serveur:~$ sudo docker run hello-world prenom@serveur:~$ sudo usermod -aG docker $USER prenom@serveur:~$ newgrp docker prenom@serveur:~$ docker run hello-world
prenom@serveur:~$ docker pull nginx:alpine prenom@serveur:~$ docker run -d -p 8080:80 --name alpes nginx:alpine prenom@serveur:~$ docker ps

Visitez http://ip.du.serveur:8080 : nginx vous accueille depuis son conteneur.

# Fouiller DANS le conteneur : prenom@serveur:~$ docker exec -it alpes sh / # ls /usr/share/nginx/html / # exit
Sur un VPS avec ufw : ouvrez le port au besoin (sudo ufw allow 8080/tcp) et refermez-le après le labo.
prenom@serveur:~$ mkdir hello-docker && cd hello-docker prenom@serveur:~/hello-docker$ jed Dockerfile
FROM alpine:3.19 CMD ["echo", "Hello depuis Docker !"]
prenom@serveur:~/hello-docker$ docker build -t hello-docker . prenom@serveur:~/hello-docker$ docker run hello-docker Hello depuis Docker !
Vous venez de parcourir toute la chaîne : Dockerfile, build, image, run, conteneur !

Créez un répertoire avec un sous-répertoire src/ contenant un index.php, puis :

FROM php:8.3-apache RUN docker-php-ext-install pdo pdo_mysql COPY ./src/ /var/www/html/ ENV APP_ENV=production EXPOSE 80 CMD ["apache2-foreground"]
prenom@serveur:~/mon-app$ docker build -t mon_php_app . prenom@serveur:~/mon-app$ docker run -d -p 8081:80 --name appli mon_php_app

Le site du module 1 tournait sur Apache installé à la main ; le voilà emballé dans un conteneur.

C'est pour ça qu'on met ce qui change souvent en BAS du Dockerfile : les rebuilds deviennent instantanés.
# Arreter et retirer les conteneurs prenom@serveur:~$ docker stop alpes appli prenom@serveur:~$ docker rm alpes appli # Lister puis retirer les images prenom@serveur:~$ docker images prenom@serveur:~$ docker rmi hello-docker mon_php_app nginx:alpine # Verifier qu'il ne reste rien prenom@serveur:~$ docker ps -a prenom@serveur:~$ docker system df

La promesse du paquet cadeau : après le ménage, votre système est exactement comme avant.

Conteneurisation maîtrisée ! Vous savez emprunter, construire, lancer et nettoyer des conteneurs. Semaine 13 : on apprend à les lancer tout seuls - scripts, transitions, cron et services.