<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des Docker - Pandawan</title>
	<atom:link href="https://www.pandawan.fr/tag/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.pandawan.fr/tag/docker/</link>
	<description>La connaissance prends de la valeur quand on la partage</description>
	<lastBuildDate>Sun, 01 Dec 2024 06:49:10 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.pandawan.fr/wp-content/uploads/2024/02/cropped-cropped-DALL·E-2024-02-08-04.31.51-Un-logo-creatif-pour-Pandawan-representant-un-panda-stylise-et-sympathique-en-train-de-faire-de-linformatique.-Le-panda-est-assis-devant-un-ordina-1-32x32.webp</url>
	<title>Archives des Docker - Pandawan</title>
	<link>https://www.pandawan.fr/tag/docker/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>04 Conteneur Docker</title>
		<link>https://www.pandawan.fr/les-conteneurs-avec-docker/</link>
		
		<dc:creator><![CDATA[Belkacem EL KHRISSI]]></dc:creator>
		<pubDate>Sat, 30 Nov 2024 07:44:29 +0000</pubDate>
				<category><![CDATA[Conteneurisation]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker Conteneurisation]]></category>
		<guid isPermaLink="false">https://www.pandawan.fr/?p=1153</guid>

					<description><![CDATA[<p>Lorsque vous lancez une image Docker, elle génère un conteneur Docker. Ce conteneur sera un réplica de cette image au niveau des fichiers. Cependant, il intégrera son propre espace de [...]</p>
<p>L’article <a href="https://www.pandawan.fr/les-conteneurs-avec-docker/">04 Conteneur Docker</a> est apparu en premier sur <a href="https://www.pandawan.fr">Pandawan</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Lorsque vous lancez une image Docker, elle génère un conteneur Docker. Ce conteneur sera un réplica de cette image au niveau des fichiers. Cependant, il intégrera son propre espace de stockage, ses processus distincts et un environnement d&rsquo;exécution isolé. Par exemple, prenons l’image que nous avons précédemment récupérée du portail «<a href="https://hub.docker.com/"> Docker Hub</a> ». Pour l’exécuter, nous utiliserons la commande « docker run », soit pour l’image Ubuntu..</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run ubuntu</code></pre>



<p>Cette commande recherche l&rsquo;image Ubuntu sur la machine locale. Si l&rsquo;image n&rsquo;est pas présente, elle la télécharge depuis Docker Hub. Ensuite, elle crée un conteneur basé sur cette image. Le conteneur exécute généralement la commande par défaut, souvent /bin/bash, pour permettre l&rsquo;interaction. Pour lister les conteneurs en cours d&rsquo;exécution, exécutez la commande « docker ps ».</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker ps</code></pre>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="1134" height="107" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-24.png" alt="Liste conteneur docker active" class="wp-image-866" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-24.png 1134w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-24-300x28.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-24-1024x97.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-24-768x72.png 768w" sizes="(max-width: 1134px) 100vw, 1134px" /></figure>



<p>Comme nous pouvons le constater sur la capture d’écran ci-dessus, il n’y a aucun conteneur. Cela s’explique par le fait qu’après avoir exécuté la commande « /bin/bash », il n’exécute plus aucune autre commande. Un conteneur docjer qui n&rsquo;éxecutre rien s&rsquo;éteinds automatiquement d&rsquo;où le statut « Exited ». Ce conteneur, même s&rsquo;il est éteint, est tout de même présent dans la machine. Pour voir tous les conteneurs actifs ou inactifs (statut exited), nous exécuterons la commande « docker ps -a ».</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker ps -a</code></pre>



<figure class="wp-block-image"><img decoding="async" width="1667" height="116" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25.png" alt="" class="wp-image-867" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25.png 1667w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25-300x21.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25-1024x71.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25-768x53.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-25-1536x107.png 1536w" sizes="(max-width: 1667px) 100vw, 1667px" /></figure>



<p>Afin de pouvoir interagir avec une instance dès sa création, il nous faudra le précisier au lancement du conteneur Docker.  Pour cela, nous spécifierons lnous ajouterons le mode interactif (-i)et d&rsquo;un terminal (-t). Cela nous permettra d&rsquo;engager une interaction avec le conteneur via notre propre terminal.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -it ubuntu</code></pre>



<figure class="wp-block-image"><img decoding="async" width="1576" height="58" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27.png" alt="" class="wp-image-869" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27.png 1576w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27-300x11.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27-1024x38.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27-768x28.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-27-1536x57.png 1536w" sizes="(max-width: 1576px) 100vw, 1576px" /></figure>



<p>Dans notre invite de commande, sur prompt, nous sommes passé du nom de l’hôte « docker » à l’identifiant de l’instance « 7c85ed7d6261 ».</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1398" height="88" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-28.png" alt="" class="wp-image-870" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-28.png 1398w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-28-300x19.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-28-1024x64.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-28-768x48.png 768w" sizes="auto, (max-width: 1398px) 100vw, 1398px" /></figure>



<p>Dans ce conteneur, le seul processus en cours d&rsquo;exécution est  le shell Bash.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1325" height="108" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-29.png" alt="" class="wp-image-871" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-29.png 1325w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-29-300x24.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-29-1024x83.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-29-768x63.png 768w" sizes="auto, (max-width: 1325px) 100vw, 1325px" /></figure>



<p>Pour revenir à l&rsquo;invite de commande de l&rsquo;hôte sans éteindre le conteneur, nous utiliserons la combinaison de touches<strong><em> [Ctrl]+[P]</em></strong> <strong><em>[Ctrl]+[Q]</em></strong>.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1240" height="46" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-31.png" alt="" class="wp-image-873" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-31.png 1240w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-31-300x11.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-31-1024x38.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-31-768x28.png 768w" sizes="auto, (max-width: 1240px) 100vw, 1240px" /></figure>



<p>Nous exécuterons la commande permettant de répertorier tous les conteneurs, et nous constaterons que notre conteneur affiche un statut « UP ».</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1384" height="113" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-32.png" alt="" class="wp-image-874" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-32.png 1384w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-32-300x24.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-32-1024x84.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-32-768x63.png 768w" sizes="auto, (max-width: 1384px) 100vw, 1384px" /></figure>



<p>L&rsquo;utilisation de la combinaison de touches [Ctrl]+[P] et [Ctrl]+[Q]  nous détache de l&rsquo;invite de commande du terminal de notre conteneur. Pour revenir au terminal de notre conteneur, nous attacherons le terminale de l&rsquo;hôte à celui du conteneur. Nous utiliserons son identifiant unique, soit « 7c85ed7d6261&Prime; dans notre exemple, ou même en tronquant l&rsquo;identifiant en indiquant « 7c ».</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker attach 7c</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1069" height="116" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-33.png" alt="" class="wp-image-875" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-33.png 1069w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-33-300x33.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-33-1024x111.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-33-768x83.png 768w" sizes="auto, (max-width: 1069px) 100vw, 1069px" /></figure>



<p>Les modifications apportées à un conteneur n&rsquo;affectent ni l&rsquo;image d&rsquo;origine, ni la machine où le moteur Docker est exécuté. Pour illustrer ce concept, prenons  notre conteneur, nous allons créer un fichier nommé « panda » dans le répertoire /home/.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="903" height="141" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-34.png" alt="" class="wp-image-876" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-34.png 903w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-34-300x47.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-34-768x120.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-34-900x141.png 900w" sizes="auto, (max-width: 903px) 100vw, 903px" /></figure>



<p>Après avoir créer et vérifier la présence du fichier « panda », nous détacherons l’invite de commande. Pour rappel le détachement de l&rsquo;invite de commande se fait à l’aide de la combinaison de touche clavier [ctrl]+[P] et [ctrl]+[Q]. Nous vérifierons ensuite que le répertoire /home/ de notre machine n’héberge pas ce fichier.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="990" height="84" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-35.png" alt="" class="wp-image-877" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-35.png 990w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-35-300x25.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-35-768x65.png 768w" sizes="auto, (max-width: 990px) 100vw, 990px" /></figure>



<p>Après avoir créé et vérifié la présence du fichier « panda », nous détacherons l&rsquo;invite de commande de notre conteneur à l&rsquo;aide de la combinaison de touches [Ctrl]+[P] et [Ctrl]+[Q], puis nous vérifierons que le répertoire /home/ de notre machine ne contient pas ce fichier. Pour récapituler ce qui a été expliqué précédemment, Docker crée une couche de données supplémentaire pour stocker ces nouvelles données. Cela s&rsquo;appelle la couche de données différentielle. La couche de données différentielle est fusionnée avec les autres données de notre conteneur pour former un seul objet, qui est le conteneur lui-même. Les informations de cette couche de données différentielle sont stockées dans les bibliothèques de Docker. Il nous sera possible de lister les données différentielles et les données fusionner, c’est-à-dire notre fichier panda en le recherchant dans notre système.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1502" height="78" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-36.png" alt="" class="wp-image-878" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-36.png 1502w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-36-300x16.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-36-1024x53.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-36-768x40.png 768w" sizes="auto, (max-width: 1502px) 100vw, 1502px" /></figure>



<p>Nous retournerons dans notre conteneur, puis nous ajouterons des données dans le fichier «&nbsp;panda&nbsp;».</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker attach 7c
root@7c85ed7d6261:/home# echo "Bonjour" &gt; panda
root@7c85ed7d6261:/home# cat panda</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1281" height="136" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-37.png" alt="" class="wp-image-879" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-37.png 1281w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-37-300x32.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-37-1024x109.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-37-768x82.png 768w" sizes="auto, (max-width: 1281px) 100vw, 1281px" /></figure>



<p>Retournons sur l’invite de commande de notre machine et éditons le fichier de différencier.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# vi /var/lib/docker/overlay2/14401c86fa9a626c1d8b39a7c6ba94968a3d4c6e8a54fe745db8f97efb307e8e/diff/home/panda</code></pre>



<p>Nous ajouterons des données dans ce fichier.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1088" height="40" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-38.png" alt="" class="wp-image-880" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-38.png 1088w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-38-300x11.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-38-1024x38.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-38-768x28.png 768w" sizes="auto, (max-width: 1088px) 100vw, 1088px" /></figure>



<p>Après avoir enregistrer les modifications nous retournerons dans notre conteneur, puis nous éditerons le fichier que nous avons créée.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker attach 7c
root@7c85ed7d6261:/home# cat panda</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1284" height="82" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-39.png" alt="" class="wp-image-882" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-39.png 1284w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-39-300x19.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-39-1024x65.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-39-768x49.png 768w" sizes="auto, (max-width: 1284px) 100vw, 1284px" /></figure>



<p>Les données n’auront pas été altérer par la modification que nous avons apporté à notre fichier vu qu’elles n’ont pas été fusionner avec les autres éléments de notre conteneur, c’est dire les données stockées dans le fichier&nbsp;: <em>«&nbsp;var/lib/docker/overlay2/14401c86f../merged/home/panda&nbsp;»</em>.</p>



<p>Sortons une nouvelle fois de notre conteneur à l’aide des combinaisons de touche [ctrl]+[P] et [ctrl]+[Q], nous ajouterons des données dans le fichier&nbsp;:</p>



<p><em>«&nbsp;var/lib/docker/overlay2/14401c86f&#8230;/merged/home/panda»</em>.</p>



<p class="has-text-align-center">👍🏻 <strong>Les &#8230; sont à remplacer par la suite alphanumérique complet.</strong></p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# vi /var/lib/docker/overlay2/14401c.../merged/home/panda</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1070" height="52" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-40.png" alt="" class="wp-image-884" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-40.png 1070w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-40-300x15.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-40-1024x50.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-40-768x37.png 768w" sizes="auto, (max-width: 1070px) 100vw, 1070px" /></figure>



<p>Après avoir enregistrer cette modification, nous attacherons une nouvelle fois le conteneur à notre invite de commande puis nous afficherons le contenu du fichier «&nbsp;panda&nbsp;».</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="836" height="112" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-41.png" alt="" class="wp-image-886" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-41.png 836w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-41-300x40.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-41-768x103.png 768w" sizes="auto, (max-width: 836px) 100vw, 836px" /></figure>



<p>Docker se concentre principalement sur la séparation des programmes, appelés processus, pour éviter qu&rsquo;ils ne se perturbent mutuellement et sur la gestion équitable des ressources telles que la puissance de calcul (CPU) et la mémoire. Cependant, en ce qui concerne les données, Docker n&rsquo;impose pas une séparation aussi stricte par défaut. Cela signifie que, si nous ne prenons pas de précautions, les programmes dans les conteneurs pourraient partager ou même accéder à des données que nous souhaitons garder privées. Il est donc essentiel d&rsquo;être attentif à la manière dont nous gérons et partageons les données dans Docker pour garantir la sécurité et la confidentialité des informations sensibles.</p>



<p><a id="post-840-_Toc151354839"></a></p>
<p>L’article <a href="https://www.pandawan.fr/les-conteneurs-avec-docker/">04 Conteneur Docker</a> est apparu en premier sur <a href="https://www.pandawan.fr">Pandawan</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>05 conteneur Docker : l&#8217;isolation</title>
		<link>https://www.pandawan.fr/conteneur-par-la-pratique/</link>
		
		<dc:creator><![CDATA[Belkacem EL KHRISSI]]></dc:creator>
		<pubDate>Sat, 30 Nov 2024 07:44:29 +0000</pubDate>
				<category><![CDATA[Conteneurisation]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker Conteneurisation]]></category>
		<guid isPermaLink="false">https://www.pandawan.fr/?p=1156</guid>

					<description><![CDATA[<p>Aprés avoir vu les conteneneurs Dockers, nous allons maintenant explorer l&#8217;isolation d conteneur Docker. Tout d&#8217;abord, nous commencerons par voir un avantage de la conteneurisation : l&#8217;isolation. En effet, la capacité à [...]</p>
<p>L’article <a href="https://www.pandawan.fr/conteneur-par-la-pratique/">05 conteneur Docker : l&rsquo;isolation</a> est apparu en premier sur <a href="https://www.pandawan.fr">Pandawan</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Aprés avoir vu les <a href="https://www.pandawan.fr/?p=1153">conteneneurs Dockers</a>, nous allons maintenant explorer l&rsquo;isolation d conteneur Docker. Tout d&rsquo;abord, nous commencerons par voir un avantage de la conteneurisation : l&rsquo;isolation. En effet, la capacité à isoler les applications grâce aux conteneurs individuels résout les conflits de dépendances entre applications. Par exemple, lorsqu&rsquo;une application requiert une version spécifique d&rsquo;une bibliothèque, cela peut créer des conflits avec une autre application. Ainsi, en utilisant des conteneurs, chaque application est emballée avec ses propres dépendances, évitant ainsi les perturbations mutuelles. De ce fait, vous pouvez exécuter plusieurs applications sur la même machine sans conflits. </p>



<h2 class="wp-block-heading" id="h-contexte-de-la-mise-en-pratique-de-l-isolation-d-un-conteneur-docker">Contexte de la mise en pratique de l&rsquo;isolation d&rsquo;un conteneur Docker</h2>



<p>Pour illustrer le concept de l&rsquo;isolation de conteneur  Docker, prenons un exemple concret. Supposons que vous ayez une application web relativement ancienne qui exige PHP7. En outre, sur cette machine, vous souhaitez également installer une autre application plus récente qui nécessite la version PHP8. Dans une installation traditionnelle, vous auriez besoin de deux machines virtuelles distinctes (ou deux machines physiques). Cependant, en les intégrant dans un conteneur Docker, nous pouvons exécuter les deux applications sur la même machine en s&rsquo;appuyant sur des conteneurs Docker. Ainsi, cela évitera la complexité et les coûts supplémentaires associés à la gestion de plusieurs machines. C&rsquo;est ce concept de la conteneurisation que nous allons couvrir dans un premier temps.</p>



<h2 class="wp-block-heading" id="h-creation-d-un-conteneur-docker-executant-php7">Création d’un conteneur Docker exécutant php7</h2>



<p>Nous illustrerons cet exemple par une mise en pratique. Précédemment, nous avons récupérer une image Ubuntu, nous allons nous en servir pour créer un conteneur Docker.</p>



<p>Nous créerons ce conteneur Docker que nous nommerons « apache_php7 » soit la commande suivante :</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -it --name apache_php7 ubuntu</code></pre>



<p>Après avois créé notre conteneur Docker, nous mettrons à jours ce dernier.</p>



<pre class="wp-block-code"><code>root@94331d07f35a:/# apt update -y
root@94331d07f35a:/# apt upgrade -y</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1055" height="280" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-44.png" alt="update du systeme" class="wp-image-890" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-44.png 1055w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-44-300x80.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-44-1024x272.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-44-768x204.png 768w" sizes="auto, (max-width: 1055px) 100vw, 1055px" /></figure>



<h3 class="wp-block-heading" id="h-installation-serveur-web-apache">Installation serveur web Apache</h3>



<p>PHP a besoin d&rsquo;un serveur web pour fonctionner.  Apache est l&rsquo;un des serveurs web les plus couramment utilisés pour exécuter des applications PHP. Par conséquent nous installerons «&nbsp;Apache httpd&nbsp;»</p>



<pre class="wp-block-code"><code>root@94331d07f35a:/# apt install apache2 -y</code></pre>



<h3 class="wp-block-heading" id="h-installation-de-php-7-4">Installation de PHP 7.4</h3>



<p>La version 22.04 d&rsquo;Ubuntu inclut des dépôts qui fournissent PHP dans sa version 8 par défaut. Si nous souhaitons installer la version 7 de PHP, nous devrons recourir à un <a href="https://launchpad.net/ubuntu/+ppas">PPA (Personal Package Archive)</a>. Dans le PPA de ondrej nous y retrouverons les packages requis pour installer PHP 7. Pour pouvoir ajouter un PPA, nous allons avoir besoin de l’utilitaire «&nbsp;add-apt-repository&nbsp;» présent dans le package «&nbsp;software-properties-common&nbsp;».</p>



<pre class="wp-block-code"><code>root@94331d07f35a:/# apt install software-properties-common -y
root@94331d07f35a:/# add-apt-repository ppa:ondrej/php -y
root@94331d07f35a:/# apt install php7.4 -y</code></pre>



<p>Lors de l’installation, il nous sera demandé le choix de zone géographique pour configurer le fuseau horaire de php (php.ini).</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1630" height="738" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46.png" alt="tzdata php dans le conteneur" class="wp-image-894" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46.png 1630w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46-300x136.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46-1024x464.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46-768x348.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-46-1536x695.png 1536w" sizes="auto, (max-width: 1630px) 100vw, 1630px" /></figure>



<p>Vérifions  que la version de PHP est effectivement bien la version 7 à l’aide de la commande suivante&nbsp;: .</p>



<pre class="wp-block-code"><code>root@94331d07f35a:/# php --version</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1273" height="161" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-47.png" alt="version de php" class="wp-image-897" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-47.png 1273w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-47-300x38.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-47-1024x130.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-47-768x97.png 768w" sizes="auto, (max-width: 1273px) 100vw, 1273px" /></figure>



<p>Nous allons générer un fichier qui exécute la fonction phpinfo(), ce qui nous permettra d&rsquo;afficher la configuration de PHP. Ce fichier sera placé dans le répertoire par défaut d&rsquo;Apache, qui est /var/www/html.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1126" height="221" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-48.png" alt="executer un script php dans un conteneur" class="wp-image-899" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-48.png 1126w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-48-300x59.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-48-1024x201.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-48-768x151.png 768w" sizes="auto, (max-width: 1126px) 100vw, 1126px" /></figure>



<p>La configuration est terminé . Nous sortirons de notre conteneur à l’aide de la combinaison de touche [ctrl]+[p], [ctrl]+[q].</p>



<p>Nous listerons nos conteneurs pour s’assurer que celui que nous venons de créer est bien présent et actif.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker ps</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1473" height="139" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-49.png" alt="Liste des conteneur en run" class="wp-image-901" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-49.png 1473w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-49-300x28.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-49-1024x97.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-49-768x72.png 768w" sizes="auto, (max-width: 1473px) 100vw, 1473px" /></figure>



<h3 class="wp-block-heading" id="h-mappage-de-port">Mappage de port</h3>



<p>Pour accéder à ce conteneur Docker, nous devons associer le port d&rsquo;écoute du conteneur au port de  la machine hôte. Dans notre exemple, nous avons conteneurisé un serveur web Apache. Le serveur apache par défaut écoute sur le port 80. En mappant le port 80 du conteneur au port 80 de la machine hôte, il sera accessible via son IP. L’adresse de la machine utilise l’adresse 10.0.0.3, cette sur cette adresse que le serveur web sera accessible</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1494" height="127" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-50.png" alt="cli récupérer son adresse IP" class="wp-image-903" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-50.png 1494w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-50-300x26.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-50-1024x87.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-50-768x65.png 768w" sizes="auto, (max-width: 1494px) 100vw, 1494px" /></figure>



<p>Nous n’avons pas précisé d’écoute à la création de notre container. Par conséquent, nous pouvons constater que le conteneur n’écoute sur aucun port.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1466" height="115" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-51.png" alt="Liste des conteneur docker en cours" class="wp-image-905" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-51.png 1466w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-51-300x24.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-51-1024x80.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-51-768x60.png 768w" sizes="auto, (max-width: 1466px) 100vw, 1466px" /></figure>



<p>Dans la partie suivante, nous verrons comment convertir ce conteneur Docker en une image. En effet, pour exposer le port 80 de notre conteneur Docker, nous devons le préciser au lancement de l&rsquo;image. Dans notre cas, si nous ne convertissons pas le conteneur Docker en une image Docker, nous devrions tout refaire. Le fait de convertir ce conteneur Docker en image Docker, nous permettra de repartir de là où on en était.</p>



<h3 class="wp-block-heading" id="h-convertir-un-conteneur-docker-en-image-docker">Convertir un conteneur Docker en image Docker</h3>



<p>Configurez le mappage de port lors de la création du conteneur Docker. Ensuite, pour éviter de répéter toutes les commandes utilisées pour créer ce conteneur, transformez-le en une image. Appelez cette image&nbsp;<strong>srv_web_php7</strong>&nbsp;et ajoutez-y un tag.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker commit apache_php7 srv_web_php7:latest</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1099" height="105" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-53.png" alt="" class="wp-image-908" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-53.png 1099w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-53-300x29.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-53-1024x98.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-53-768x73.png 768w" sizes="auto, (max-width: 1099px) 100vw, 1099px" /></figure>



<p>Nous vérifierons que l’image Docker a bien été ajouter sur la machine hôte.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker images</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1133" height="145" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-54.png" alt="" class="wp-image-910" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-54.png 1133w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-54-300x38.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-54-1024x131.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-54-768x98.png 768w" sizes="auto, (max-width: 1133px) 100vw, 1133px" /></figure>



<h3 class="wp-block-heading" id="h-supprimer-un-conteneur">Supprimer un conteneur</h3>



<p>Nous répliquons la configuration de cette image chaque fois que nous l&rsquo;utilisons pour créer un conteneur Docker. En résumé, nous pouvons supprimer le conteneur Docker utilisé pour créer cette image. Pour cela, nous commençons par arrêter le conteneur Docker, puis nous le supprimons. Enfin, nous vérifions que le conteneur Docker a bien été supprimé.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker stop apache_php7
&#91;root@docker ~]# docker rm apache_php7
&#91;root@docker ~]# docker ps -a</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1541" height="246" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56.png" alt="" class="wp-image-913" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56.png 1541w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56-300x48.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56-1024x163.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56-768x123.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-56-1536x245.png 1536w" sizes="auto, (max-width: 1541px) 100vw, 1541px" /></figure>



<h3 class="wp-block-heading" id="h-supprimer-plusieurs-conteneurs">Supprimer plusieurs conteneurs</h3>



<p>Pour rappel, un conteneur est conçu pour être léger et jetable. Donc, dans une utilisation typique, lorsqu&rsquo;un conteneur est éteint, il n&rsquo;a généralement plus de raison d&rsquo;être. Nous supprimerons donc les conteneurs stockés sur la machine hôte après avoir arrêté ceux qui sont en statut « UP ».</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker stop 7c85ed7d6261
&#91;root@docker ~]# docker rm -f $(docker ps -aq)</code></pre>



<p>Explication de la commande :</p>



<ul class="wp-block-list">
<li><strong>docker ps -aq</strong> : liste tous les conteneurs, en incluant ceux qui ne sont pas en cours d&rsquo;exécution</li>



<li><strong>docker rm -f</strong> supprime tous les conteneurs dont les IDs sont renvoyés par la commande précédente.</li>
</ul>



<p>Nous vérifierons qu’il n’y a plus aucun conteneur.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker ps -a</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1033" height="113" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-57.png" alt="" class="wp-image-915" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-57.png 1033w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-57-300x33.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-57-1024x112.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-57-768x84.png 768w" sizes="auto, (max-width: 1033px) 100vw, 1033px" /></figure>



<h3 class="wp-block-heading" id="h-exposition-d-un-port-d-un-conteneur-docker">Exposition d&rsquo;un port d&rsquo;un conteneur Docker</h3>



<p>Maintenant nous avons un environnement sans aucun conteneur préexistant.Nous testerons notre image précédemment créé. Cette fois nous mapperons le port 80 du conteneur et le port 80 de la machine. Étant donné que le service httpd d&rsquo;Apach n&rsquo;est pas démarrer par défaut, nous allons le lancer manuellement.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -it -p 80:80 --name php7 srv_web_php7
root@81610801a595:/# apachectl start</code></pre>



<p>L&rsquo;adresse IP de la machine est 10.0.0.3. Par conséquent,le serveur Web de notre conteneur sera accessible à partir de cette adresse. Pour permettre à la machine hôte de recevoir des requêtes sur le port 80. Il nous faudra donc configurer le pare-feu de la machine hôte pour autoriser le trafic entrant sur ce port.</p>



<pre class="wp-block-code"><code>root@81610801a595:/# <em>&#91;ctrl]+&#91;P] &amp; &#91;ctrl]+&#91;Q]</em>
&#91;root@docker ~]# firewall-cmd --add-service=http --permanent
&#91;root@docker ~]# firewall-cmd –reload</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1190" height="166" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-58.png" alt="" class="wp-image-917" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-58.png 1190w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-58-300x42.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-58-1024x143.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-58-768x107.png 768w" sizes="auto, (max-width: 1190px) 100vw, 1190px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="931" height="548" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-59.png" alt="" class="wp-image-919" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-59.png 931w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-59-300x177.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-59-768x452.png 768w" sizes="auto, (max-width: 931px) 100vw, 931px" /></figure>



<p>En lançant un navigateur depuis une machine connectée au même réseau nous nous connecterons à l&rsquo;URL http://10.0.0.3/. Nous devrions avoir accès à notre serveur WEB</p>



<p>Nous nous rendrons sur http://10.0.0.3/phpinfo.php, pour vérifier que nous utilisons PHP version 7.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="931" height="548" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-60.png" alt="" class="wp-image-921" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-60.png 931w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-60-300x177.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-60-768x452.png 768w" sizes="auto, (max-width: 931px) 100vw, 931px" /></figure>



<h4 class="wp-block-heading" id="h-creation-d-un-conteneur-en-executant-php8">Création d’un conteneur en exécutant php8</h4>



<p>La création de notre conteneur Docker qui exécutera PHP 8 suivra la même logique que conteneur exécutant PHP 7. Nous commencerons à partir de notre image Ubuntu de base. Nous installerons à la fois le service httpd d&rsquo;Apache Foundation et PHP. Il est important de noter que la version 8 de PHP est disponible par défaut dans les dépôts d&rsquo;Ubuntu 22.04. Par conséquent nous n&rsquo;aurons pas besoin de recourir à l&rsquo;utilisation de PPA (Personal Package Archive) pour obtenir cette version spécifique.</p>



<p>Le port 80 de la machine hôte est déjà occupé par le conteneur qui exécute PHP version 7. Nous ne pouvons pas l&rsquo;utiliser pour ce conteneur. Nous utiliserons dons  le port 81 de la machine hôte. </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="898" height="348" src="https://www.pandawan.fr/wp-content/uploads/2024/09/une-image-contenant-texte-peripherique-descripti.png" alt="Une image contenant texte, périphérique

Description générée automatiquement" class="wp-image-923" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/une-image-contenant-texte-peripherique-descripti.png 898w, https://www.pandawan.fr/wp-content/uploads/2024/09/une-image-contenant-texte-peripherique-descripti-300x116.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/une-image-contenant-texte-peripherique-descripti-768x298.png 768w" sizes="auto, (max-width: 898px) 100vw, 898px" /></figure>



<h3 class="wp-block-heading" id="h-configuration-le-conteneur-docker-php-8">Configuration le conteneur docker PHP 8</h3>



<p>Nous commencerons par créer notre conteneur avec la commande suivante&nbsp;:</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -it -p 81:80 --name php8 ubuntu</code></pre>



<p>Dans le conteneur que nous venons de créer, Aprés avoir mis à jour le systeme nous y installerons : </p>



<ul class="wp-block-list">
<li>le serveur web Apache </li>



<li> php 8</li>
</ul>



<pre class="wp-block-code"><code>root@fb9b37059606:/# apt update -y &amp;&amp; apt upgrade -y
root@fb9b37059606:/# apt install apache2 -y
root@fb9b37059606:/# apt install php -y
root@fb9b37059606:/# apachectl restart</code></pre>



<p>Une fois PHP installé, nous pouvons vérifier qu&rsquo;il s&rsquo;agit bien de la version 8 qui est en cours d&rsquo;exécution.</p>



<pre class="wp-block-code"><code>root@fb9b37059606:/# php -v</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1319" height="173" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-62.png" alt="" class="wp-image-924" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-62.png 1319w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-62-300x39.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-62-1024x134.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-62-768x101.png 768w" sizes="auto, (max-width: 1319px) 100vw, 1319px" /></figure>



<p>Nous créerons également un fichier exécutant la fonction phpinfo() à la racine du répertoire «&nbsp;html&nbsp;» présent dans «&nbsp;/va/www/&nbsp;»</p>



<pre class="wp-block-code"><code>root@fb9b37059606:/# echo "&lt;?php phpinfo(); ?&gt;" &gt; /var/www/html/phpinfo.php</code></pre>



<p>Après être sorti de notre conteneur, nous autoriserons la machine hôte à recevoir des requêtes sur le port 81.</p>



<pre class="wp-block-code"><code>root@fb9b37059606:/#
&#91;root@docker ~]# firewall-cmd --add-port=81/tcp --permanent
&#91;root@docker ~]# firewall-cmd --reload</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1187" height="159" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-63.png" alt="" class="wp-image-927" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-63.png 1187w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-63-300x40.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-63-1024x137.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-63-768x103.png 768w" sizes="auto, (max-width: 1187px) 100vw, 1187px" /></figure>



<p>Nous pouvons maintenant nous rendre sur le port 81 de notre machine hôte pour accéder à notre conteneur. Nous constaterons que le conteneur exécutant PHP8 est bien fonctionnel.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1887" height="576" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64.png" alt="" class="wp-image-929" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64.png 1887w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64-300x92.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64-1024x313.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64-768x234.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64-1536x469.png 1536w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-64-1800x549.png 1800w" sizes="auto, (max-width: 1887px) 100vw, 1887px" /></figure>



<p>Docker référencie bien ses deux conteneurs, un qui est mapper sur le port 80 et un autre mapper sur le port 81.</p>



<p>[root@docker ~]# docker ps</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1649" height="143" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65.png" alt="" class="wp-image-934" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65.png 1649w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65-300x26.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65-1024x89.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65-768x67.png 768w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-65-1536x133.png 1536w" sizes="auto, (max-width: 1649px) 100vw, 1649px" /></figure>



<h2 class="wp-block-heading" id="h-acceder-au-conteneur-derriere-un-reverse-proxy">Accéder au conteneur derrière un reverse proxy</h2>



<p>Dans un environnement de production, nous configurons un serveur Web pour qu&rsquo;il soit accessible sur son port par défaut, correspondant aux protocoles « http » ou « https » : le port 80 pour http et le port 443 pour https. Pour atteindre cet objectif, nous utilisons un reverse proxy qui reçoit les requêtes entrantes et les redirige vers le conteneur Docker approprié. Pour faciliter l&rsquo;identification de ces conteneurs Docker par les utilisateurs, nous employons des noms de domaine pleinement qualifiés (FQDN) en mettant en place un système de résolution de noms. Nous allons maintenant découvrir comment réaliser cette configuration.</p>



<h3 class="wp-block-heading" id="h-creation-d-u-conteneur-de-l-image-php8">Création d&rsquo;u conteneur de l&rsquo;image PHP8</h3>



<p>Pour démarrer ce nouveau projet, nous capitalisons sur notre travail antérieur. Cependant, avant de poursuivre, nous créons en priorité l&rsquo;image Docker pour le conteneur Docker exécutant PHP 8. Autrement dit, nous élaborons cette nouvelle image de la même manière que nous l&rsquo;avons fait pour l&rsquo;image du conteneur Docker srv_web_php7.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker commit fb9b37059606 srv_web_php8:latest</code></pre>



<p>Nous vérifierons que l’image a bien été créée.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker images</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1380" height="174" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-66.png" alt="" class="wp-image-936" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-66.png 1380w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-66-300x38.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-66-1024x129.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-66-768x97.png 768w" sizes="auto, (max-width: 1380px) 100vw, 1380px" /></figure>



<p>Nous créerons l’architecture suivante&nbsp;:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1034" height="389" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-67.png" alt="" class="wp-image-938" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-67.png 1034w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-67-300x113.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-67-1024x385.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-67-768x289.png 768w" sizes="auto, (max-width: 1034px) 100vw, 1034px" /></figure>



<p>Dans cette configuration de base, nous disposons déjà de l&rsquo;image « srv_web_php7 » pour créer le conteneur « PHP7 », ainsi que de l&rsquo;image « src_web_php8 » pour créer le conteneur « PHP8 ». Notre prochaine étape consiste à créer l&rsquo;image qui exécutera le reverse proxy, lequel sera configuré sur un serveur nginx. Cependant, avant de faire cela, nous commencerons avec un environnement Docker propre, sans aucun conteneur. Supprimons donc ceux que nous avons précédemment créer.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker rm -f $(docker ps -aq)</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1170" height="170" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-68.png" alt="" class="wp-image-941" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-68.png 1170w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-68-300x44.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-68-1024x149.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-68-768x112.png 768w" sizes="auto, (max-width: 1170px) 100vw, 1170px" /></figure>



<p>Nous commencerons par créer notre conteneur PHP7. Nous allons également avoir besoin d’outils «&nbsp;ip&nbsp;» pour configurer la partie réseau et de l’outils ping pour tester la communication entre nos conteneurs. L’outils «&nbsp;ip&nbsp;» est présent dans le paquet «&nbsp;iproute2&nbsp;» et l’outil «&nbsp;ping&nbsp;» sera disponible en installant le paquet «&nbsp;iptutils-ping&nbsp;». Ce conteneur sera ensuite converti en images, par conséquent, pour le moment, nous le mapperons sur aucun port de la machine physique.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -it --name PHP7 srv_web_php7
root@413ddd8824ab:/# apt update -y &amp;&amp; apt upgrade -y
root@413ddd8824ab:/# apt install iproute2 iputils-ping -y</code></pre>



<p>Nous vérifierons que nous avons bien la possibilité d’utiliser la commande «&nbsp;ip&nbsp;», par exemple, nous utiliserons la commande «&nbsp;ip&nbsp;» pour connaître l’adresse IP de notre passerelle.</p>



<pre class="wp-block-code"><code>root@413ddd8824ab:/# ip route show</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1208" height="107" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-69.png" alt="" class="wp-image-942" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-69.png 1208w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-69-300x27.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-69-1024x91.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-69-768x68.png 768w" sizes="auto, (max-width: 1208px) 100vw, 1208px" /></figure>



<p>Nous testerons également la commande «&nbsp;ping&nbsp;» en tenant de communiquer avec la passerelle configurée sur le conteneur.</p>



<pre class="wp-block-code"><code>root@413ddd8824ab:/# ping 172.17.0.1 -c 4</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="934" height="265" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-70.png" alt="" class="wp-image-945" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-70.png 934w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-70-300x85.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-70-768x218.png 768w" sizes="auto, (max-width: 934px) 100vw, 934px" /></figure>



<h3 class="wp-block-heading" id="h-creation-du-conteneur-php8">Création du conteneur PHP8</h3>



<p>Pour la création du conteneur PHP8, nous procéderons de la même façon après avoir détacher notre terminal de l’invite de commande de notre nouveau conteneur en utilisant la combinaison de touche [ctrl]+[P] &amp; [ctrl]+[Q].</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1193" height="155" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-71.png" alt="Création d'un conteneur docker php8" class="wp-image-947" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-71.png 1193w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-71-300x39.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-71-1024x133.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-71-768x100.png 768w" sizes="auto, (max-width: 1193px) 100vw, 1193px" /></figure>



<p>Ensuite nous mettrons à jours le système et nous installerons les paquets «&nbsp;iproute2&nbsp;» et «&nbsp;iputils-ping&nbsp;».</p>



<pre class="wp-block-code"><code>root@212bbec8e72c:/# apt update -y &amp;&amp; apt upgrade -y
root@212bbec8e72c:/# apt install iproute2 iputils-ping -y</code></pre>



<p>Nous effectuerons les mêmes tests que ceux que nous avons fait sur le conteneur que nous avons précédemment créé.</p>



<pre class="wp-block-code"><code>root@212bbec8e72c:/# ip route show
root@212bbec8e72c:/# ping 172.17.0.1 -c4</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1087" height="382" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-72.png" alt="Communication Conteneur docker vers l'extérieur" class="wp-image-950" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-72.png 1087w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-72-300x105.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-72-1024x360.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-72-768x270.png 768w" sizes="auto, (max-width: 1087px) 100vw, 1087px" /></figure>



<p>Nous constaterons que les conteneurs partagent la même adresse de passerelle, ce qui indique clairement que les deux conteneurs sont sur le même réseau à savoir 172.17.0.0/16. Si l’adresse de ce conteneur est 172.17.0.3, l’adresse du précédent conteneur est 172.17.0.2. Cette information est donnée lors de la commande «&nbsp;ip route show&nbsp;» à la fin de la seconde ligne.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="956" height="80" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-73.png" alt="passerelle des conteneur docker" class="wp-image-952" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-73.png 956w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-73-300x25.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-73-768x64.png 768w" sizes="auto, (max-width: 956px) 100vw, 956px" /></figure>



<p>Ce conteneur étant configurer nous pouvons détacher notre terminal de l’invite de commande du conteneur.</p>



<h3 class="wp-block-heading" id="h-creation-du-conteneur-nginx">Création du conteneur NGINX</h3>



<p>Pour le conteneur docker qui exécutera nginx, nous devons repartir d’une image vierge. Nous repartirons sur l’image Ubuntu vu qu’elle est présente sur notre machine.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1178" height="100" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-74.png" alt="Créer un conteneur docker reverse-proxy" class="wp-image-954" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-74.png 1178w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-74-300x25.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-74-1024x87.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-74-768x65.png 768w" sizes="auto, (max-width: 1178px) 100vw, 1178px" /></figure>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -ti --name reverse_proxy ubuntu</code></pre>



<p>Dans ce conteneur, nous installerons le paquet «&nbsp;nginx&nbsp;» qui sera configuré en reverse proxy et nous y ajouterons les outils «&nbsp;iproute2&nbsp;» et «&nbsp;iputils-ping&nbsp;» après avoir mis à jour le système d’exploitation.</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/# apt update -y &amp;&amp; apt upgrade -y
root@e4cee4f4deb3:/# apt install nginx iproute2 iputils-ping -y</code></pre>



<h3 class="wp-block-heading" id="h-rappelle-fonctionnement-reverse-proxy">Rappelle fonctionnement Reverse Proxy</h3>



<p>Le reverse proxy fonctionne en se basant sur l&rsquo;URL de la requête. Une seule machine peut héberger plusieurs sites ou applications. Pour différencier ces sites, il est essentiel d&rsquo;utiliser des noms de domaine pleinement qualifiés (FQDN) uniques. Lorsqu&rsquo;une requête HTTP est reçue, le reverse proxy examine l&rsquo;entête HTTP, en particulier l&rsquo;URL et le nom d&rsquo;hôte, pour déterminer où rediriger la requête. Cela nécessite que le reverse proxy puisse résoudre le nom d&rsquo;hôte (FQDN) en une adresse IP pour identifier la destination correcte et transmettre la requête au bon conteneur ou serveur. </p>



<h4 class="wp-block-heading" id="h-configuration-de-la-resolution-de-nom">Configuration de la résolution de nom</h4>



<p>Pour éviter d’avoir à déployer un DNS, nous utiliserons le fichier /etc/hosts présent dans le conteneur «&nbsp;reverse_proxy&nbsp;». Nous rappellerons ici qu’un conteneur n’a pas d’éditeur de texte par défaut, nous utiliserons donc la commande «&nbsp;echo&nbsp;» pour modifier le fichier /etc/hosts. Une ligne étant une information, dans notre contexte, nous avons à renseigner la résolution de nom de deux conteneurs, nous aurons donc un saut de ligne, il nous faudra donc utiliser le commutateur «&nbsp;-e » pour la prise en charge du saut de ligne ( \n ) dans la commande echo</p>



<p>Etant donnée que le conteneur PHP7 a pour adresse IP 172.17.0.2, nous lui attribuerons le nom pleinement qualifier «&nbsp;php7.elkhrissi.lab&nbsp;» et pour le conteneur PHP8 disponible à l’adresse IP 172.17.0.3 avec le FQDN «&nbsp;php8.elkhrissi.lab&nbsp;».</p>



<p>Nous ajouterons donc ses informations dans le fichier hosts de notre conteneur «&nbsp;reverse_proxy&nbsp;».</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/# echo -e "172.17.0.2 php7 php7.elkhrissi.lab \n172.17.0.3 php8 php8.elkhrissi.lab" &gt;&gt; /etc/hosts</code></pre>



<p>Nous vérifierons que la résolution de nom est bien effective à l’aide de la commande «&nbsp;ping&nbsp;».</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/# ping php7.elkhrissi.lab -c1
root@e4cee4f4deb3:/# ping php8.elkhrissi.lab -c1</code></pre>



<p>Ce conteneur doit pouvoir communiquer avec les deux autres conteneurs PHP7 et PHP8, nous exécuterons une commande ping pour vérifier que le conteneur nginx peut joindre le conteneur PHP7 et PHP8.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="990" height="399" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-75.png" alt="Test de la communication entre les conteneur docker" class="wp-image-956" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-75.png 990w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-75-300x121.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-75-768x310.png 768w" sizes="auto, (max-width: 990px) 100vw, 990px" /></figure>



<h4 class="wp-block-heading" id="h-configuration-du-reverse-proxy">Configuration du reverse proxy</h4>



<p>Nous mettrons en place une configuration dans nginx qui permettra de rediriger les requêtes adressées au nom de domaine pleinement qualifié (FQDN) « php7.elkhrissi.lab » vers le conteneur PHP7, et les requêtes adressées à « php8.elkhrissi.lab » vers le conteneur PHP8.</p>



<h5 class="wp-block-heading" id="h-reverse-proxy-pour-php7">Reverse proxy pour PHP7</h5>



<p>Pour la configuration des requêtes à destination du conteneur PHP7, nous créerons un fichier de configuration php7.conf qui devra être stocké /etc/nginx/conf.d/. Le contenu de se fichier sera le suivant&nbsp;:</p>



<pre class="wp-block-code"><code>server {
listen 80;
server_name php7.elkrhissi.lab;
location / {
proxy_pass http://php7.elkhrissi.lab;
}</code></pre>



<ul class="wp-block-list">
<li><strong>server { &#8230; }</strong> : Cela définit un bloc de configuration pour un serveur virtuel. Cela signifie que les instructions à l&rsquo;intérieur de ce bloc s&rsquo;appliqueront aux requêtes entrantes qui correspondent au nom du serveur spécifié (server_name) et au port spécifié (listen).</li>



<li><strong>listen 80;</strong> : Cette ligne indique au serveur nginx d&rsquo;écouter les requêtes entrantes sur le port 80. Le port 80 est le port par défaut pour les requêtes HTTP non chiffrées.</li>



<li><strong>server_name php7.elkrhissi.lab;</strong> : Ici, nous spécifions le nom de domaine pleinement qualifié (FQDN) auquel le reverse proxy répondra. Dans ce cas, il s&rsquo;agit de php7.elkrhissi.lab. Cela signifie que ce serveur nginx traitera les requêtes entrantes pour ce FQDN spécifique.</li>



<li><strong>location / { &#8230; } </strong>: Cela configure une directive location qui spécifie comment le serveur nginx doit gérer les requêtes pour les chemins correspondant à la racine (« / »). Cela signifie que toutes les requêtes entrantes seront gérées par cette directive.</li>



<li><strong>proxy_pass http://php7.elkhrissi.lab;</strong> : C&rsquo;est la partie la plus importante de la configuration. Cette directive indique à nginx de rediriger toutes les requêtes entrantes à cette location vers le conteneur Docker nommé « php7.elkhrissi.lab » en utilisant le protocole HTTP. En d&rsquo;autres termes, lorsque le serveur nginx reçoit une requête pour php7.elkrhissi.lab, il transmettra cette requête au conteneur Docker qui exécute PHP7, permettant ainsi au conteneur de traiter la requête et de renvoyer la réponse.</li>
</ul>



<p>Pour créer ce fichier, nous utiliserons l’outil «&nbsp;echo&nbsp;»</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/#echo 'server {
   listen 80;
   server_name php7.elkhrissi.lab;
   location / {
   proxy_pass http://php7.elkhrissi.lab;
   }
}' | tee <a id="post-840-_Hlk144912481"></a>/etc/nginx/conf.d/php7.conf</code></pre>



<h4 class="wp-block-heading" id="h-reverse-proxy-pour-php8">Reverse proxy pour PHP8</h4>



<p>Pour les requêtes à destination du conteneur exécutant PHP8, nous créerons un fichier de configuration en gardant la même logique que le fichier que nous avons créé précédemment.</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/#echo 'server {
    listen 80;
    server_name php8.elkhrissi.lab;
    location / {
    proxy_pass http://php8.elkhrissi.lab;
   }
}' | tee /etc/nginx/conf.d/php8.conf</code></pre>



<h3 class="wp-block-heading" id="h-conversion-conteneur-docker-en-image-docker">Conversion conteneur docker en image docker</h3>



<p>Nous convertirons ses conteneurs en une image, pour ce faire, nous devrons détacher notre terminal de l’invite de commande de notre conteneur à l’aide des combinaisons de touche [ctrl]+[P] &amp; [ctrl]+[Q]</p>



<pre class="wp-block-code"><code>root@e4cee4f4deb3:/# &#91;ctrl]+&#91;P] &amp; &#91;ctrl]+&#91;Q]
&#91;root@docker ~]# docker commit e4cee4f4deb3 reverse-proxy</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1184" height="126" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-76.png" alt="convertir conteneur Docker vers image Docker" class="wp-image-959" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-76.png 1184w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-76-300x32.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-76-1024x109.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-76-768x82.png 768w" sizes="auto, (max-width: 1184px) 100vw, 1184px" /></figure>



<p>Nous avons notre image prête à l’emploi, nous allons pouvoir l’exécuter et mapper le port 80 du conteneur avec le port 80 de la machine hôte. Le conteneur s’appellera nginx-rp.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker run -ti -p 80:80 --name nginx-rp reverse-proxy</code></pre>



<p>En lançant le service nginx dans notre conteneur, nous sommes confrontés à une erreur. Cette erreur survient en raison de l&rsquo;absence de persistance des données stockées dans notre conteneur précédent, qui a servi de base pour créer cette image.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1193" height="101" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-77.png" alt="Démarrer service nginx dans le conteneur docker" class="wp-image-961" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-77.png 1193w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-77-300x25.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-77-1024x87.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-77-768x65.png 768w" sizes="auto, (max-width: 1193px) 100vw, 1193px" /></figure>



<p>Cette caractéristique essentielle des conteneurs, à savoir leur nature éphémère, signifie qu&rsquo;ils ne conservent pas les données au-delà de leur cycle de vie, du moins pas celles qui ne sont pas présentes dans leur système de fichiers principal. Par défaut, lors de l&rsquo;installation d&rsquo;une nouvelle application, les fichiers de configuration sont généralement stockés dans les répertoires du service, c&rsquo;est-à-dire dans le système de fichiers principal du conteneur. Ainsi, nous retrouverons bien nos fichiers de configuration.</p>



<pre class="wp-block-code"><code>root@1c6760241900:/# ls /etc/nginx/conf.d/</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1101" height="76" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-78.png" alt="VirtualHost di conteneur docker nginx" class="wp-image-963" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-78.png 1101w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-78-300x21.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-78-1024x71.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-78-768x53.png 768w" sizes="auto, (max-width: 1101px) 100vw, 1101px" /></figure>



<p>En revanche, les modifications que nous avons apportées au fichier /etc/hosts n’ont pas été conservé.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1184" height="249" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-79.png" alt="résollution des conteneurs docker" class="wp-image-965" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-79.png 1184w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-79-300x63.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-79-1024x215.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-79-768x162.png 768w" sizes="auto, (max-width: 1184px) 100vw, 1184px" /></figure>



<p>Par conséquent, lors du démarrage du service nginx, nous avons configuré des fichiers de configuration dans lesquels nous avons spécifié les noms de domaine vers lesquels il doit rediriger les requêtes. Cependant, le service nginx ne peut pas les contacter car le système ne peut pas résoudre ces noms de domaine en adresses IP. En conséquence, le service nginx génère une erreur. Nous ajouterons nos deux entrées dans le fichier /etc/hosts puis nous serons en mesure de démarrer le service nginx.</p>



<pre class="wp-block-code"><code>root@1c6760241900:/# echo -e "172.17.0.2 php7 php7.elkhrissi.lab \n172.17.0.3 php8 php8.elkhrissi.lab" &gt;&gt; /etc/hosts
root@1c6760241900:/# service nginx start</code></pre>



<h3 class="wp-block-heading" id="h-verification-des-acces-aux-serveurs-web">Verification des accès aux serveurs Web </h3>



<p>À partir d&rsquo;une machine cliente Windows connectée au même réseau que notre machine hôte, nous vérifierons la fonctionnalité de notre configuration. Avant de procéder aux vérifications, nous ajusterons le fichier hosts de la machine cliente afin qu&rsquo;elle puisse résoudre les noms de domaine de nos deux conteneurs. Nous ouvrions «&nbsp;notepad&nbsp;» en tant qu’administrateur, nous ouvrions le fichier hosts disponible au chemin C:\Windows\System32\drivers\etc. En sélectionnant «&nbsp;Tout les fichiers&nbsp;» en bas à doite nous devrions voir le fichier hosts. Nous le sélectionnerons et cliquerons sur le bouton «&nbsp;Ouvrir&nbsp;»</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1159" height="462" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-81.png" alt="Ouvrir fichier Host résolution de nom des conteneurs DOcker" class="wp-image-968" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-81.png 1159w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-81-300x120.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-81-1024x408.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-81-768x306.png 768w" sizes="auto, (max-width: 1159px) 100vw, 1159px" /></figure>



<p>L’adresse IP que nous renseignerons sera l’adresse IP de notre machine hôte qui, dans le cadre de cette documentation est 10.0.0.3 qui cela la résolution de nom de «&nbsp;php7.elkhrissi.lab&nbsp;» et «&nbsp;php8.elkhrissi.lab&nbsp;»</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1265" height="636" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-82.png" alt="Fichier Host résolution de nom des conteneurs DOcker" class="wp-image-970" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-82.png 1265w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-82-300x151.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-82-1024x515.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-82-768x386.png 768w" sizes="auto, (max-width: 1265px) 100vw, 1265px" /></figure>



<p>Une fois que la modification a été enregistré, nous allons nous rendre aux&nbsp;URLs après nous êtes assurer que les services apache sur nos conteneurs est bien démarré :</p>



<p>Après avoir enregistré la modification, nous allons accéder aux URLs suivant une fois que nous nous sommes assurés que les services Apache dans nos conteneurs Docker sont bien démarrés :</p>



<ul class="wp-block-list">
<li>http://php7.elkhrissi.lab/phpinfo.php</li>



<li>http://php8.elkhrissi.lab/phpinfo.php</li>
</ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1456" height="390" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-83.png" alt="Version PHP dans conteneur DOcker" class="wp-image-973" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-83.png 1456w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-83-300x80.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-83-1024x274.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-83-768x206.png 768w" sizes="auto, (max-width: 1456px) 100vw, 1456px" /></figure>



<p>Nous vérifierons que les deux conteneurs ne communiquent pas ensemble. Pour ce faire, nous allons utiliser l’outils ping qui, par défaut, n’est pas présent. Nous l’installerons dans le conteneur app-php7, app-php8</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker exec -it app-php7 apt-get install -y iputils-ping
&#91;root@docker ~]# docker exec -it app-php8 apt-get install -y iputils-ping</code></pre>



<p>Pour rappel, l’adresse IP du conteneur Docker de « app-php7 » est 192.168.1.2 et l’adresse IP de « app-php8 » est 192.168.2.2</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1302" height="101" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-108.png" alt="" class="wp-image-1020" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-108.png 1302w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-108-300x23.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-108-1024x79.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-108-768x60.png 768w" sizes="auto, (max-width: 1302px) 100vw, 1302px" /></figure>



<p>Nous testerons que la communication entre app-php7 et app-php8 ne peux pas se faire.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker exec -it app-php7 ping -c 4 192.168.2.2</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="961" height="166" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-109.png" alt="" class="wp-image-1022" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-109.png 961w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-109-300x52.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-109-768x133.png 768w" sizes="auto, (max-width: 961px) 100vw, 961px" /></figure>



<p>En toute logique, le conteneur app-php8 ne sera pas en mesure de communiquer avec app-php7.</p>



<pre class="wp-block-code"><code>&#91;root@docker ~]# docker exec -it app-php7 ping -c 4 192.168.2.2</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1046" height="163" src="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-111.png" alt="" class="wp-image-1026" srcset="https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-111.png 1046w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-111-300x47.png 300w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-111-1024x160.png 1024w, https://www.pandawan.fr/wp-content/uploads/2024/09/word-image-840-111-768x120.png 768w" sizes="auto, (max-width: 1046px) 100vw, 1046px" /></figure>



<p>Dans ce chapitre, nous avons vu le cloisonnement sans passer par des solutions UTM. Si nous voulions durcir le cloisonnement la solution docker ne serait pas adaptée, d’autres solutions existent.</p>
<p>L’article <a href="https://www.pandawan.fr/conteneur-par-la-pratique/">05 conteneur Docker : l&rsquo;isolation</a> est apparu en premier sur <a href="https://www.pandawan.fr">Pandawan</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
