T206 ‐ Administration système et réseaux II (Pratique) - Nini1551/EPHEC_Syntheses GitHub Wiki
docker run hello-world
- Pouvez-vous expliquer avec vos mots ce qui s’est passé suite à l’exécution de cette commande?
La commande essaye de lancer un container sur base de l'image 'hello-world' sur le repository Docker. Puisque celui-ci n'existe pas, il est créé.
docker container ls -a
- Retrouvez les informations suivantes sur le container lancé précédemment :
- Quel est son identifiant ? 3bcfedc38ab5
- Quel est son nom ? competent_mestorf
- Quel est son état ? Exited (0)
- Quel est le nom de son image? Avez-vous vu au point 1.1. d’‘où cette image provenait? hello-world. Elle provient du repository Docker.
- Quelle commande le container a-t-il exécuté? /hello
- Si vous avez installer Docker Desktop, pouvez-vous retrouver ces mêmes informations dans l’interface graphique? Oui, elles peuvent tout être retrouvées avec d'autres.
docker images ls
- Quelles informations voyez-vous? Quel est le lien avec ce que vous avez observé auparavant? La liste des images téléchargées. Il s'agit de la base utilisée par le container pour se lancer.
- Comparez l’output de cette commande avec la vue correspondante de l’interface graphique. On y voit l'image hello-world (son nom, son tag, son id, quand elle a été créée, sa taille)
- Essayez de trouver la commande qui vous permettra de supprimer cette image. C’est une bonne idée de ne pas conserver les images non utilisées sur votre système de fichiers : même avec la mutualisation de couches, elles prennent de l’espace sur le disque!
docker images rm <nom/id>
/docker rmi <nom/id>
Il faut d'abord supprimer les containers qui se base sur l'image qu'on souhaite supprimer.
docker run -it ubuntu bash
- A quoi servent les options i et t dans la commande ci-dessus? Elles permettent d'afficher et d'interagir avec le shell émuler.
- Chaque container Docker est destiné à exécuter une commande unique. Quelle est-elle dans ce cas-ci? Elle exécute la commande 'bash'
- Dans le container, quels sont les processus présents? Et leurs PIDs? _ 1 bash_ 11 ps
- Avec quel utilisateur êtes-vous loggé? root
- Votre container a-t’il accès à Internet? Qui est son résolveur? Il a accès à Internet. Le résolveur est 192.168.65.7.
- Chaque container dispose d’une interface réseau. Quelle est l’adresse IP de l’interface de votre container? 172.17.0.1
- Votre container a-t’il des ports ouverts? Non ('HostConfig': {"PortBindings": {}})
docker run -p80:80 --name=mon-serveur-web nginx
- Examinez à présent le container ainsi lancé, soit depuis l’interface graphique, soit depuis la console. Que voyez-vous, au niveau des “ports” ? Pas de ports ouverts
- Analysez le container et comparez les informations relatives aux ports ouverts avec celles obtenues deux étapes plus tôt. Quelle est la différence ? Ici, le port 80 est ouvert en tcp.
docker exec -it <nom-du-container> /bin/bash
Modifier /usr/share/nginx/html/index.html
Pour sauvegarder l'image :
docker container commit <nom-du-container> <nom-image>
Dockerfile configuration :
FROM nginx:latest
RUN apt update
RUN apt install -y nano net-tools
COPY index.html /usr/share/nginx/html
index.html
: page d'accueil personnalisée du site
docker build -t <nom de l'image>
dans le répertoire pour créer une nouvelle image sur base de l'image nginx
- Trouvez une image Apache sur le Docker Hub httpd
- Démarrez un container sur base de cette image et vérifiez qu’il fonctionne sur localhost via votre navigateur. /usr/local/apache2/htdocs/index.html
- Créez un second virtualhost sur le port 8080.
docker run -p80:80 -p8080:8080 --name=mon-apache httpd
A CORRIGER / NE MARCHE PAS - Personnalisez la page d’accueil des deux virtual hosts.
- Créez un Dockerfile permettant d’obtenir une image avec votre configuration Apache personnalisée.
A COMPLETER
Placer le Dockerfile dans le même répertoire que le script (qui sera appelé script.py).
Dockerfile :
FROM python:latest
COPY script.py /usr/src/app/script.py
CMD ["python", "/usr/src/app/script.py"]