Docker repose sur deux concepts fondamentaux : les images et les conteneurs. Une image est un fichier en lecture seule, comparable à une application comme Tomcat, MySQL ou Redis. Un conteneur est un système Linux minimaliste créé par Docker, dans lequel les images s'exécutent de manière isolée. Par exemple, vous pouvez exécuter plusieurs instances de MySQL dans des conteneurs distincts.
Installation de Docker
Sous Windows, installez Docker Desktop. Lancez l'installation et suivez les étapes par défaut. Une fois installé, ouvrez un terminal et exécutez :
C:\Users\Utilisateur>docker version
Client:
Cloud integration: 1.0.14
Version: 20.10.6
API version: 1.41
Go version: go1.16.3
Git commit: 370c289
Built: Fri Apr 9 22:49:36 2021
OS/Arch: windows/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.6
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8728dd2
Built: Fri Apr 9 22:44:56 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.4
GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc:
Version: 1.0.0-rc93
GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Cette sortie confirme l'installation réussie.
Installation de Tomcat via Docker
Téléchargez l'image Tomcat depuis le registre Docker :
C:\Users\Utilisateur>docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
bd8f6a7501cc: Pull complete
44718e6d535d: Pull complete
...
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
Pour accélérer le téléchargement, configurez un registre miroir. Vérifiez les images disponibles :
C:\Users\Utilisateur>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest c0e850d7b9bb 2 weeks ago 667MB
hello-world latest d1165f221234 2 months ago 13.3kB
Lancement de Tomcat
Exécutez la commande suivante pour démarrer Tomcat :
C:\Users\Utilisateur>docker run -p 8000:8080 tomcat
L'option -p 8000:8080 mappe le port 8080 du conteneur au port 8000 de l'hôte. Accédez à http://localhost:8000 dans votre navigateur.
Résolution de l'erreur 404
Si une erreur 404 apparaît, identifiez le conteneur en cours :
C:\Users\Utilisateur>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54f85f2559cd tomcat "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp silly_morse
Connectez-vous au conteneur :
C:\Users\Utilisateur>docker exec -it 54f85f2559cd /bin/bash
root@54f85f2559cd:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
Le dossier webapps est vide ; les fichiers sont dans webapps.dist. Corrigez cela en déplaçant les fichiers :
root@54f85f2559cd:/usr/local/tomcat# mv webapps.dist/* webapps/
root@54f85f2559cd:/usr/local/tomcat# rm -rf webapps.dist/
Pour rendre cette modification permanente, créez une nouvlele image :
C:\Users\Utilisateur>docker commit -m="Correction 404" -a="auteur" 54f85f2559cd mon-tomcat:1.0
sha256:99efe959f94c616aad213fc4c4b899cd1d16faac7511834ee5942fbd6693e8c6
Redémarrez avec la nouvelle image :
docker run -p 8000:8080 mon-tomcat:1.0
Déploiement d'une page HTML personnalisée
Créez un dossier mon-projet avec un fichier index.html :
<h1>Bonjour le monde</h1>
Ajoutez un fichier Dockerfile (sans extension) :
FROM mon-tomcat:1.0
WORKDIR /usr/local/tomcat/webapps
ADD mon-projet ./mon-projet
Construisez l'image :
docker build -t utilisateur/mon-app:1.0 C:\chemin\vers\mon-projet
Lancez l'application :
docker run utilisateur/mon-app:1.0
Accédez à http://localhost:8000/mon-projet.
Commandes Docker essentielles
| Commande | Exemple d'utilisation |
|---|---|
| Liste des images | docker images |
| Conteneurs actifs | docker ps |
| Arrêter un conteneur | docker stop ID_CONTENEUR |
| Redémarrer un conteneur | docker restart ID_CONTENEUR |
| Se connecter à un conteneur | docker exec -it ID_CONTENEUR /bin/bash |
| Exécuter une image | docker run IMAGE_ID |
| Supprimer un conteneur | docker rm ID_CONTENEUR |
| Supprimer une image | docker rmi IMAGE_ID |