{"id":902,"date":"2019-06-10T19:14:43","date_gmt":"2019-06-10T17:14:43","guid":{"rendered":"http:\/\/blogperso.union31.fr\/?p=902"},"modified":"2021-03-13T11:10:51","modified_gmt":"2021-03-13T10:10:51","slug":"docker-partie-ii","status":"publish","type":"post","link":"https:\/\/blogperso.union31.fr\/?p=902","title":{"rendered":"Docker : r\u00e9seau, volume, docker-compose"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sommaire<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#I_La_communication_reseau\" >I La communication r\u00e9seau<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#I1_Mapper_un_port_reseau\" >I.1 Mapper un port r\u00e9seau<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#I2_Les_reseaux_prives\" >I.2 Les r\u00e9seaux priv\u00e9s<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#II_Container_en_mode_deamon\" >II Container en mode deamon<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#III_Associer_une_ressource_externe_au_container\" >III Associer une ressource externe au container<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#IV_Docker-compose\" >IV Docker-compose<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#IV1_Installation\" >IV.1 Installation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#IV_2_Utilisation\" >IV. 2 Utilisation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blogperso.union31.fr\/?p=902\/#IV_3_Quelques_commandes_utiles\" >IV. 3 Quelques commandes utiles<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I_La_communication_reseau\"><\/span>I La communication r\u00e9seau<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I1_Mapper_un_port_reseau\"><\/span>I.1 Mapper un port r\u00e9seau<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Dans l&rsquo;article pr\u00e9c\u00e9dent nous avions t\u00e9l\u00e9charg\u00e9 une image d\u00e9di\u00e9e \u00e0 mail trap. Et une fois le container lanc\u00e9, nous voyons que les ports d&rsquo;\u00e9coutes de ce container sont le port 25 (SMPTP) et le port 80(Web).<\/p>\n\n\n\n<p>Or le container n&rsquo;est pas accessible. C&rsquo;est normal. Il faut au lancement du container sp\u00e9cifier les ports qui peuvent communiquer.<\/p>\n\n\n\n<p>Dans notre exemple nous allons ouvrir le port 80 de la VM vers le port 80 du container. Ainsi la commande est la suivante :<\/p>\n\n\n\n<p>docker run -p <strong>80:80<\/strong> -ti eaudeweb\/mailtrap<\/p>\n\n\n\n<p>Maintenant il est possible d&rsquo;acc\u00e9der au site web. Pour connaitre tous les d\u00e9tails de cette image, il faut aller sur le \u00ab\u00a0hub\u00a0\u00bb de docker. C&rsquo;est un site web qui recense toutes les images. Pour l&rsquo;image eaudeweb\/mailtrap, les pages web indique que les identifiants roundcube sont : mailtrap\/mailtrap.<\/p>\n\n\n\n<p>Pour finir et si on veut que le container soit pleinement fonctionnel il faut \u00e9galement mapper le port. <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker run -p 80:80 -p 8025:25 -ti eaudeweb\/mailtrap<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"I2_Les_reseaux_prives\"><\/span>I.2 Les r\u00e9seaux priv\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Il est possible de placer un docker dans un r\u00e9seau priv\u00e9 d\u00e9di\u00e9. Tous les containers plac\u00e9s dedans pourront communiquer entre eux.<\/p>\n\n\n\n<p>Mais avant il faut cr\u00e9er ce r\u00e9seau dans un premier temps :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>docker network create reseau1<\/strong>\n30e0e2f9ae017018889709ebf82ee024f4d9cc79781c67740c6ab031331fef9b<\/code><\/pre>\n\n\n\n<p>Pour visualiser la liste des r\u00e9seaux :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>docker network ls<\/strong>\nNETWORK ID          NAME                     DRIVER              SCOPE\n32ebbe8e1880        bridge                   bridge              local\ne802263173bf        docker-compose_default   bridge              local\n54bbf7e7b0ee        host                     host                local\n2e1c935ffec9        none                     null                local\n30e0e2f9ae01        reseau1                  bridge              local\n<\/code><\/pre>\n\n\n\n<p>Lancer 2 containers sur le m\u00eame r\u00e9seau :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker run -it --name ubuntu1 <strong>--net reseau1<\/strong> debian bash\nsudo docker run -it --name ubuntu2 <strong>--net reseau1<\/strong> debian bash<\/code><\/pre>\n\n\n\n<p>Ainsi au sein d&rsquo;un container il est possible de pinguer par exemple l&rsquo;autre container. Dans le cas ci-dessous nous sommes dans ubuntu2 et voulons pinguer ubuntu1 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@a20b978f1d47:\/# ping ubuntu1\nPING ubuntu1 (172.19.0.2) 56(84) bytes of data.\n<span class=\"has-inline-color has-vivid-green-cyan-color\">64 bytes from ubuntu1.reseau1 (172.19.0.2): icmp_seq=1 ttl=64 time=0.117 ms\n64 bytes from ubuntu1.reseau1 (172.19.0.2): icmp_seq=2 ttl=64 time=0.046 ms<\/span>\n<\/code><\/pre>\n\n\n\n<p>En revanche si un 3\u00e8me container ne sp\u00e9cifie pas ce r\u00e9seau il ne pourra pas communiquer avec les 2 premiers :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -it --name ubuntu3 debian bash\nroot@fdd09adb97be:\/# ping ubuntu1\n<span class=\"has-inline-color has-vivid-red-color\">ping: ubuntu1: No address associated with hostname<\/span>\nroot@fdd09adb97be:\/# \n<\/code><\/pre>\n\n\n\n<p>Pour voir le d\u00e9tail du r\u00e9seau priv\u00e9 fournit par docker :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>docker network inspect reseau1<\/strong>\n&#91;\n    <span class=\"has-inline-color has-vivid-cyan-blue-color\">{\n        \"Name\": \"reseau1\",\n        \"Id\": \"30e0e2f9ae017018889709ebf82ee024f4d9cc79781c67740c6ab031331fef9b\",\n        \"Created\": \"2021-03-13T10:30:45.139434009+01:00\",\n        \"Scope\": \"local\",\n        \"Driver\": \"bridge\",\n        \"EnableIPv6\": false,\n        \"IPAM\": {\n            \"Driver\": \"default\",\n            \"Options\": {},\n            \"Config\": &#91;\n                {\n                    \"Subnet\": \"172.19.0.0\/16\",\n                    \"Gateway\": \"172.19.0.1\"\n                }\n            ]\n        },<\/span>\n        \"Internal\": false,\n        \"Attachable\": false,\n        \"Ingress\": false,\n        \"ConfigFrom\": {\n            \"Network\": \"\"\n        },\n        \"ConfigOnly\": false,\n        \"Containers\": {\n            \"1055e8e6f0421302ee9371ab978c12544457bdcdb104a6353b530109dc0f16ef\": {\n                \"Name\": \"ubuntu1\",\n                \"EndpointID\": \"5ba63bd7039b0656ab363923dc8664bad29a333f93aa51bbfdcf2914dfd9ce07\",\n                \"MacAddress\": \"02:42:ac:13:00:02\",\n                \"IPv4Address\": \"172.19.0.2\/16\",\n                \"IPv6Address\": \"\"\n            },\n            \"a20b978f1d471f7fe6b522c4d6c6af5d67a3c3b38ec2f1212be1ad463c486b8f\": {\n                \"Name\": \"ubuntu2\",\n                \"EndpointID\": \"a83e3b54306f57d94b399f968bae87d36cf65e6f3aec243742b7da466da3d2c0\",\n                \"MacAddress\": \"02:42:ac:13:00:03\",\n                \"IPv4Address\": \"172.19.0.3\/16\",\n                \"IPv6Address\": \"\"\n            }\n        },\n        \"Options\": {},\n        \"Labels\": {}\n    }\n]\n<\/code><\/pre>\n\n\n\n<p>Pour aller plus et comprendre ces m\u00e9canismes r\u00e9seaux : <a href=\"https:\/\/docs.docker.com\/engine\/tutorials\/networkingcontainers\/\" target=\"_blank\" rel=\"noreferrer noopener\">lien<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"II_Container_en_mode_deamon\"><\/span>II Container en mode deamon<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Lancer un container et laisser un terminal ouvert n&rsquo;est franchement pas pratique. Il est possible de le lancer <strong>en t\u00e2che de fond <\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> docker run -d -p 80:80 -p 8025:25 -ti eaudeweb\/mailtrap <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">7e896f3ffd4b8c20347517344373861250660e840ed2ef308136eaa0d9549e3a<\/pre>\n\n\n\n<p><strong>Ainsi pour voir quels containers sont en cours d&rsquo;execution :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker ps<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES<br>\n7e896f3ffd4b        eaudeweb\/mailtrap   \"\/var\/local\/docker\u2026\"   41 seconds ago      Up 41 seconds       0.0.0.0:80-&gt;80\/tcp, 0.0.0.0:8025-&gt;25\/tcp   admiring_bell<\/pre>\n\n\n\n<p><strong>Entrer dans un docker existant :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker exec -it 7e896f3ffd4b bash<\/li><\/ul>\n\n\n\n<p><strong>Voir la consommation en ressource du container :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker container stats 7e896f3ffd4b<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">CONTAINER           CPU %               MEM USAGE \/ LIMIT       MEM %               NET I\/O             BLOCK I\/O           PIDS<br>\n7e896f3ffd4b        0.03%               22.96 MiB \/ 991.2 MiB   2.32%               6.63 kB \/ 17.1 kB   0 B \/ 2.76 MB       22<\/pre>\n\n\n\n<p><strong>Arr\u00eater un container :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker container stop  7e896f3ffd4b<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@localhost ~]# docker ps -a\n CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES\n 7e896f3ffd4b        eaudeweb\/mailtrap   \"\/var\/local\/docker\u2026\"   7 minutes ago       Exited (137) About a minute ago                       admiring_bell<\/pre>\n\n\n\n<p><strong>Supprimer un container (pas une image)<\/strong> :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> docker container rm 7e896f3ffd4b <\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"III_Associer_une_ressource_externe_au_container\"><\/span>III Associer une ressource externe au container<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Le fait de red\u00e9marrer le container implique que toutes les modifications seront perdues. Dans le cas de mailtrap, ce n&rsquo;est pas trop grave. Mais dans le cas par exemple d&rsquo;un serveur web ce n&rsquo;est pas possible. L&rsquo;id\u00e9e de cr\u00e9er une nouvelle image n&rsquo;est pas une solution (Cela fonction mais c&rsquo;est peu pratique). L&rsquo;autre id\u00e9e est d&rsquo;indiquer qu&rsquo;un ou plusieurs r\u00e9pertoires du container soit mapper vers un r\u00e9pertoire ext\u00e9rieur. On dit que l&rsquo;on va mapper un r\u00e9pertoire.<\/p>\n\n\n\n<p>Nous allons prendre le container centos et mapper le r\u00e9pertoire \/var\/log du container vers le r\u00e9pertoire ~\/lab\/persistence :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker run -ti <strong>-v ~\/lab\/persistence\/:\/var\/log\/<\/strong> centos<\/li><\/ul>\n\n\n\n<p>PS : si au sein du container il y a un probl\u00e8me de droit, il faut se pencher sur le SE Linux du syst\u00e8me h\u00f4te. C&rsquo;est lui qui bloque les acc\u00e8s du container vers le r\u00e9pertoire ext\u00e9rieur.<\/p>\n\n\n\n<p>Pour revenir \u00e0 notre r\u00e9pertoire log, cet exemple fonctionne mais n&rsquo;est pas probant. Dans le cas d&rsquo;un container qui contient apache par exemple, mapper le r\u00e9pertoire WWW peut en revanche \u00eatre plus qu&rsquo;utile !<\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IV_Docker-compose\"><\/span>IV Docker-compose<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IV1_Installation\"><\/span>IV.1 Installation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Docker compose est un outil qui va permettre de d\u00e9finir l&rsquo;ensemble des options d&rsquo;un container au sein d&rsquo;un seul fichier. Ceci afin d&rsquo;\u00e9viter de lancer une ligne de commande tr\u00e8s longue.<\/p>\n\n\n\n<p>Mais avant il faut l&rsquo;installer. Pour cela aller sur le site https:\/\/docs.docker.com\/compose\/install\/ et suivre les instruction.<\/p>\n\n\n\n<p><span style=\"text-decoration: underline;\">Sous centos :<\/span><\/p>\n\n\n\n<p>R\u00e9cup\u00e9rer les fichiers :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.24.0\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<p>Rendre ex\u00e9cutable :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n\n\n\n<p>Sous ubuntu :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install docker-compose<\/code><\/pre>\n\n\n\n<p>V\u00e9rifier que cela fonctionne:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker-compose -v\ndocker-compose version 1.24.0, build 0aa59064<\/pre>\n\n\n\n<p>L&rsquo;installation est termin\u00e9e<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IV_2_Utilisation\"><\/span>IV. 2 Utilisation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Cr\u00e9ation d&rsquo;un r\u00e9pertoire qui va contenir l&rsquo;ensemble des fichiers de configurations pour docker-compose<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir ~\/docker-compose\ncd ~\/docker-compose<\/pre>\n\n\n\n<p>Le fichier doit comporter le nom docker-compose.yml<\/p>\n\n\n\n<p>Cr\u00e9ation du fichier de configuration : <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">touch docker-compose.yml<\/pre>\n\n\n\n<p>Exemple d&rsquo;un premier contenu :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.7'\nservices:\n        mail_test-dev:\n                image: eaudeweb\/mailtrap\n                container_name: mailtrap-test1\n                ports:\n                        - \"8080:80\"\n                        - \"8025:25\"\n                volumes:\n                        - \/home\/xavior\/docker-compose\/persistence\/mailtrap\/:\/var\/log\/\n<\/code><\/pre>\n\n\n\n<p>Le conteneur se nommera \u00ab\u00a0Mail_test_dev\u00a0\u00bb avec un chiffre \u00e0 la fin. L&rsquo;image du conteneur sera \u00ab\u00a0eaudeweb\/mailtrap\u00a0\u00bb. Une ouverture de 2 ports sont faits (web et SMTP). Enfin un partage de ressources fichiers est fait entre l&rsquo;h\u00f4te et le conteneur.<\/p>\n\n\n\n<p>Pour connaitre la version du moteur docker :<\/p>\n\n\n\n<p>La version \u00e0 indiquer dans le fichier yaml est fonction de la version du moteur docker. Lien pour savoir quel version \u00e0 utilise : <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.docker.com\/compose\/compose-file\/\" target=\"_blank\">lien<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker -v\nDocker version 19.03.8, build afacb8b7f0<\/code><\/pre>\n\n\n\n<p>Pour ex\u00e9cuter cette configuration :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker-compose up<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Starting mailtrap-test1 ... done\nAttaching to mailtrap-test1\nmailtrap-test1   | User 1000 already exists - mailtrap, skipping creation.\nmailtrap-test1   | Starting enhanced syslogd: rsyslogdrsyslogd: imklog: cannot open kernel log (\/proc\/kmsg): Operation not permitted.\nmailtrap-test1   | rsyslogd: activation of module imklog failed &#91;v8.1901.0 try https:\/\/www.rsyslog.com\/e\/2145 ]\nmailtrap-test1   | .\nmailtrap-test1   | Starting Postfix Mail Transport Agent: postfix.\nmailtrap-test1   | Starting IMAP\/POP3 mail server: dovecot.\n...<\/code><\/pre>\n\n\n\n<p>Pour quitter, faire CTRL-C.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Ce fichier peut contenir la configuration de plusieurs containers. Exemple ci-dessous :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">version: '3.7'\n services:\n         mail_test-dev:\n                 image: eaudeweb\/mailtrap\n                 container_name: mailtrap-test1\n                 ports:\n                         - \"8080:80\"\n                         - \"8025:25\"\n                 volumes:\n                         - \/home\/xavior\/docker-compose\/persistence\/mailtrap:\/var\/log\n         <code>linux:<\/code>\n<code>                 image: centos<\/code>\n<code>                 container_name: linux_centos<\/code>\n<\/pre>\n\n\n\n<p>Nous avons 2 containers : un serveur centos et un serveur de mail.<\/p>\n\n\n\n<p>Puis pour ex\u00e9cuter l&rsquo;ensemble :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker-compose up <\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">Starting mailtrap-test1 ... done\n Starting linux_centos   ... done\n Attaching to mailtrap-test1, linux_centos mailtrap-test1   |\n User 1000 already exists - mailtrap, skipping creation. linux_centos exited with code 0\n mailtrap-test1   |\n Starting enhanced syslogd: rsyslogdrsyslogd: imklog: cannot open kernel log (\/proc\/kmsg): Operation not permitted. mailtrap-test1   |\n rsyslogd: activation of module imklog failed [v8.1901.0 try https:\/\/www.rsyslog.com\/e\/2145 ] mailtrap-test1   |\n . mailtrap-test1   |\n Starting Postfix Mail Transport Agent: postfix. mailtrap-test1   |\n Starting IMAP\/POP3 mail server: dovecot. mailtrap-test1   | Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.2. Set the 'ServerName' directive globally to suppress this message <\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"IV_3_Quelques_commandes_utiles\"><\/span>IV. 3 Quelques commandes utiles<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En mode d\u00e9mon il faut ajouter l&rsquo;option -d :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> docker-compose up  <strong>-d<\/strong><\/li><\/ul>\n\n\n\n<p>Pour arr\u00eater les containers :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker-compose stop<\/li><\/ul>\n\n\n\n<p>Pour supprimer les containers<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker-compose rm<\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I La communication r\u00e9seau I.1 Mapper un port r\u00e9seau Dans l&rsquo;article pr\u00e9c\u00e9dent nous avions t\u00e9l\u00e9charg\u00e9 une image d\u00e9di\u00e9e \u00e0 mail trap. Et une fois le container lanc\u00e9, nous voyons que les ports d&rsquo;\u00e9coutes de ce container sont le port 25<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-902","post","type-post","status-publish","format-standard","hentry","category-_systeme"],"_links":{"self":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=902"}],"version-history":[{"count":36,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/902\/revisions"}],"predecessor-version":[{"id":2214,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/902\/revisions\/2214"}],"wp:attachment":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}