🕒 : 3 h maximum
Prérequis:
TP0_Docker
PC linux ubuntu avec docker installé (TP0)
Administration linux
But:
Savoir utiliser docker pour fabriquer vos projets.
Présentation:
Qu’est-ce qu’Alpine Linux ?
Alpine Linux est une distribution Linux ultra-légère basée sur musl libc et BusyBox.
Caractéristique Valeur
Taille de l’image Docker ~5-7 MB
Taille de l’ISO ~133 MB
Noyau Linux
Gestionnaire de paquets APK (Alpine Package Keeper)
Libc musl (plus léger que glibc)
Init system OpenRC (pas systemd)
Avantages
✅ Avantages 📝 Explication
Ultra-léger Image Docker de 5 MB seulement
Rapide Démarrage en quelques millisecondes
Sécurisé Kernel durci, paquets signés
Simple Très peu de bloatware
Idéal pour Docker Parfait pour les conteneurs
Efficace Faible consommation mémoire
Docker Hub
Docker Hub est le plus grand registre d’images Docker au monde . C’est un service cloud qui permet de stocker, partager et distribuer des images de conteneurs .
Pour faire simple, Docker Hub joue un rôle similaire à GitHub pour le code, mais pour les images Docker. C’est l’endroit central où les développeurs du monde entier partagent leurs images prêtes à l’emploi.
exemple de recherche d’image docker:
docker search
etudiant@ordi:~$ docker search "gcc"
NAME DESCRIPTION STARS OFFICIAL
gcc The GNU Compiler Collection is a compiling s… 901 [OK]
stagex/gcc The GNU Compiler Collection 0
openeuler/gcc 0
unikraft/gcc 1
latelee/gcc gcc 7 0
gorzechowski/gcc gcc, g++, make, cmake 0
zsoltm/gcc GCC C / C++ on Jessie 0
oliviera/gcc gcc, g++, make and Python 0
osexp2000/gcc gcc g++ gdb make automake 0
ndless/gcc gcc, g++, make and Python 1
tim03/gcc docker image of gcc (c, c++) 0
codeawayorg/gcc C programming environment with GCC 0
iiiinnnnyyyy/gcc gcc + g++ + git + cmake + lld + ninja 0
9081165252/gcc 0
amd64/gcc The GNU Compiler Collection is a compiling s… 2
pinpad/gcc Image for C development (gcc, GNU make, git,… 0
arm32v7/gcc The GNU Compiler Collection is a compiling s… 10
fedorov7/gcc The small Docker image with C/C++ compiler (… 0
arm64v8/gcc The GNU Compiler Collection is a compiling s… 14
tymonx/gcc A Docker image with the GNU GCC C/C++ compil… 0
arm32v5/gcc The GNU Compiler Collection is a compiling s… 1
s390x/gcc The GNU Compiler Collection is a compiling s… 1
ppc64le/gcc The GNU Compiler Collection is a compiling s… 2
tkausl/gcc A gcc image I use to compile most of my proj… 0
infinitecoder/gcc gcc images for c and c++ languages. Based on… 0
etudiant@ordi:~$
Démarrage de la première alpine
Dans notre TP nous voulons partir d’une machine propre sans aucune image docker ni aucun docker
vérifions qu’aucune image ne traine sur votre machine
etudiant@ordi:~$ docker images i Info → U In UseIMAGE ID DISK USAGE CONTENT SIZE EXTRA
si jamais une image reste il faut utiliser la commande docker rmi image vous sera utile
pour tester on va en charger l’image alpine !
image docker alpine
on va charger l’image alpine:latest du docker hub
etudiant@ordi:~$ docker pull alpine:latest
latest: Pulling from library/alpine
55afa1ecc21d: Pull complete
f5124fb579e2: Download complete
56dceff11b33: Download complete
Digest: sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
etudiant@ordi:~$ docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest 28bd5fe8b56d 13MB 3.93MB
etudiant@ordi:~$
docker pull
docker pull : charge (tire) l’image du dépot docker l’image alpine:latest , dernière version
effaçons ensuite l’image de l’outil docker
etudiant@ordi:~$ docker rmi alpine:latest
Untagged: alpine:latest
Deleted: sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b
etudiant@ordi:~$
c’est une petite image de 4 Méga octets
c’est bien l’intérêt de cette distribution !
maintenant nous en avons besoin !donc on charge l’image avec docker pull alpine:latest ou mieux !
docker run
nous allons charger l’image et la démarrer pour l’utiliser .
on va utiliser l’option -it (voir tp précédent) et l’option –rm qui permet d’effacer le docker quand on le quitte (pour exeperimentations)
etudiant@ordi:~$ docker run -it --rm alpine:latest
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
55afa1ecc21d: Pull complete
56dceff11b33: Download complete
f5124fb579e2: Download complete
Digest: sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b
Status: Downloaded newer image for alpine:latest
/ #
nous sommes dans la machine ! exit ou ctrl d permet d’en sortir
/ # exit
etudiant@ordi:~$ docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest 28bd5fe8b56d 13MB 3.93MB
etudiant@ordi:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
etudiant@ordi:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
etudiant@ordi:~$
on va relancer ce docker
docker run -it –rm
etudiant@ordi:~$ docker run -it --rm alpine:latest
/ # ls
bin etc lib mnt proc run srv tmp var
dev home media opt root sbin sys usr
/ #
on va identifier son nom
docker –hostname
etudiant@ordi:~$ docker run -it --rm alpine:latest
/ # ls
bin etc lib mnt proc run srv tmp var
dev home media opt root sbin sys usr
/ # hostname
ed0895e1b8a1
/ # cat /etc/hostname
ed0895e1b8a1
/ #exit
on va lui donner un nom avec l’option -h ou –hostname , pour ce faire on en sort avec exit ou ctrl d
etudiant@ordi:~$ docker run -it --rm -h alpine alpine:latest
/ # hostname
alpine
/ #exit
docker –workdir
on peut la lancer dans un dossier de travail précis (workdir) , ici je voudrai être dans /root
option: -w ou –workdir
etudiant@ordi:~$ docker run -it –rm -w /root -h alpine alpine:latest
~ # pwd
/root
~ #
attention on a mis l’option –rm (remove) et quand on quitte le docker on perd tout! c’est ce que nous voulons pour découvrir et éviter de surcharger notre docker.
etudiant@ordi:~$ docker run -it --rm --workdir /root -h alpine alpine:latest
~ # pwd
/root
~ # echo 'coucou le monde' > bonjour.txt
~ # cat bonjour.txt
coucou le monde
~ # exit
etudiant@ordi:~$ docker run -it --rm --workdir /root -h alpine alpine:latest
~ # ls
~ # # tout est perdu !! c'etait prévu !
la notion de volume en docker
un volume est un répertoire que l’on va partager du docker à la machine hôte , et qui sera lui persistant.
sur la machine hôte créer le répertoire mon_volume (dans TP1)
etudiant@ordi:~/Works/Docker/TP1$ mkdir mon_volume
etudiant@ordi:~/Works/Docker/TP1$ ls
mon_volume
etudiant@ordi:~/Works/Docker/TP1$ docker run -it --rm --workdir /root -h alpine -v mon_volume:/data alpine:latest
~ # ls /
bin data dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
~ #
on découvre un répertoire /data à la racine
on s’y va pour créer notre bon vieux bonjour.txt
~ # cd /data/
/data # ls
/data # echo 'bonjour le monde' > bonjour.txt
/data # cat bonjour.txt
bonjour le monde
/data #
vous pouvez vérifier votre répertoire mon_volume… il est bien en commun sur les 2 machines , l’hôte et docker .
On en sort (on détruit bien le docker) (–rm) et on en refait un ou en profite pour se placer dans le workdir data , autant s’en servir.
/data # exit
etudiant@ordi:~/Works/Docker/TP1$ docker run -it --rm --workdir /data -h alpine -v mon_volume:/data alpine:latest
/data # ls
bonjour.txt
/data # cat bonjour.txt
bonjour le monde
/data #
épatant ca non ?
