Ceci est une ancienne révision du document !
Pour rendre un service accessible, le conteneur doit être lancé en arrière plan.
Docker utilise la technique classique du mappage de port :
Docker dispose pour cela d’une interface réseau sur la machine hôte.
ip a … docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:f6:de:8b:5b brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 ...
PS > ipconfig /all ... Carte Ethernet vEthernet (WSL) : Suffixe DNS propre à la connexion. . . : Description. . . . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter Adresse physique . . . . . . . . . . . : 00-15-5D-61-F5-91 DHCP activé. . . . . . . . . . . . . . : Non Configuration automatique activée. . . : Oui Adresse IPv6 de liaison locale. . . . .: fe80::a2f2:e355:be04:5818%80(préféré) Adresse IPv4. . . . . . . . . . . . . .: 172.30.16.1(préféré) Masque de sous-réseau. . . . . . . . . : 255.255.240.0 Passerelle par défaut. . . . . . . . . : IAID DHCPv6 . . . . . . . . . . . : 1342182749 DUID de client DHCPv6. . . . . . . . : 00-01-00-01-2A-76-DE-73-80-FA-5B-3F-40-3C Serveurs DNS. . . . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1 NetBIOS sur Tcpip. . . . . . . . . . . : Activé ...
Une commande possible est la suivante :
docker run -d -p <IP:port-hôte:port-conteneur> --name <nom conteneur> <image> COMMANDE
Le paramètre permettant le mappage est -p <IP:port-hôte:port-container> :
Le principe est ensuite de lancer le conteneur sera lancé en arrière plan (sans laisser de console ouverte) en mode détaché : c’est l’option -d» qui permet cela.
> docker run -d -p 8080:8080 --name servweb bitnami/apache 02b1a1ec4cd35eaab20930ee9e9dcace4414874ec84811a262aeeee026a73ee5
Pour accéder au site par défaut en http à partir de n’importe quel poste :
Nous pouvons constater via la commande docker ps que l’attribut PORT est maintenant rempli :
... PORTS NAMES PS C:\Users\Charles> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f8b8977e68b bitnami/apache "/opt/bitnami/script…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp, 8443/tcp servweb …
L’option -p peut être multiplié autant de fois que nécessaire (si par exemple il y a plusieurs services à exposer dans le conteneur).
Visualisation des ports ouverts (en écoute) sous Windows :
Autre solution :
netstat -abno | more
Get-NetTCPConnection
Pour en savoir plus sur la gestion des volumes Docker :
===== Activité à faire =====
Mission 1 :
Mission 2 : Vous devez externaliser les logs du serveur Apache afin de pouvoir les consulter en cas de besoin et d'erreur de fonctionnement du site Web Geststage et du serveur.
Mission 3 :
===== Créer un conteneur personnalisé===== L'image php:8.1-apache contient une configuration de php qui ne possède de pilote que pour gérer les accès à la base de données sqlite. Pour pouvoir disposer d'une image contenant le serveur Web Apache mais aussi php configuré pour communiquer avec la base de données MariaDB, vous allez créer une nouvelle image à partir de l'image php:8.1-apache qui contiendra les pilotes nécessaires. * Créer un ficher appelé Dockerfile (sans extension) ; * Editez ce fichier pour y mettre les instructions suivantes : <code file Dockerfile> FROM php:8.1-apache RUN apt-get update && apt-get upgrade -y RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli RUN docker-php-ext-install pdo pdo_mysql </code> * Depuis l'invite de commande Powershell, dans le dossier contenant le fichier Dokerfile, lancez la commande suivante pour créer : * une image appelée php et préfixée par votre prénom : <code powershell> docker build -t charles/php . </code> ===== Afficher les logs du conteneur ===== Si la persistance des logs en local n'est pas configurée, cette commande est utile notamment si la création du conteneur se passe mal et si l’accès au servoce Web n’est pas possible (cette commande ne renvoie rien dans ce cas si tout se passe bien). <code shell> docker logs servweb </code> ===== Mémento Docker =====
Mémento Docker : https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes-fr
====== Retour Accueil Docker ====== * Docker