{"id":2511,"date":"2019-02-03T18:08:23","date_gmt":"2019-02-03T17:08:23","guid":{"rendered":"http:\/\/miro.borodziuk.eu\/?p=2511"},"modified":"2023-03-26T15:45:17","modified_gmt":"2023-03-26T13:45:17","slug":"docker-przekierowania-porty-i-woluminy","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2019\/02\/03\/docker-przekierowania-porty-i-woluminy\/","title":{"rendered":"Docker &#8211; przekierowania, porty i woluminy"},"content":{"rendered":"<p>Nast\u0119pna cz\u0119\u015b\u0107 kursu Dockera. Tym razem o przekierowaniach port\u00f3w oraz o woluminach.<\/p>\n<p><!--more--><\/p>\n<p>Wy\u015bwietlamy list\u0119 obraz\u00f3w jakie mamy w naszym dockerze:<\/p>\n<pre class=\"lang:sh decode:true \"># docker images\r\nREPOSITORY TAG IMAGE ID CREATED SIZE\r\ncentos latest 1e1148e4cc2c 2 weeks ago 202MB\r\nnginx latest 568c4670fa80 3 weeks ago 109MB\r\ndocker\/whalesay latest 6b362a9f73eb 3 years ago 247MB<\/pre>\n<p>Uruchamiamy w tle NGINXa:<\/p>\n<pre class=\"lang:sh decode:true \"># docker ps\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n\r\n\r\n# docker run -d nginx:latest\r\ncff1324842e8b7765af4cf6d90cbf05afa061ce7e4f6624b44419e7f2542f57b\r\n# docker ps\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\ncff1324842e8 nginx:latest \"nginx -g 'daemon ...\" 3 seconds ago Up 2 seconds 80\/tcp angry_northcutt\r\n<\/pre>\n<p>Szukamy IP uruchomionego kontenera:<\/p>\n<pre class=\"lang:sh decode:true\"># docker inspect angry_northcutt | grep \"IPAddress\"\r\n\"SecondaryIPAddresses\": null,\r\n\"IPAddress\": \"172.17.0.2\",\r\n\"IPAddress\": \"172.17.0.2\",<\/pre>\n<p>Przegl\u0105damy stron\u0119 uruchomion\u0105 na kontenerze nginx na adresie IP 172.17.0.2:<\/p>\n<pre class=\"lang:sh decode:true \"># elinks http:\/\/172.17.0.2<\/pre>\n<p>Serwer NGINX dzia\u0142a na tym adresie kontenera.<\/p>\n<p>Ale na adresie localhosta serwer NGINX nie dzia\u0142a:<\/p>\n<pre class=\"lang:sh decode:true \"># elinsk localhost<\/pre>\n<p>Zatrzymajmy nasz kontener z nginxem i wszystkie kontenery w dockerze:<\/p>\n<pre class=\"lang:sh decode:true\"># docker ps\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n48d5bf14252f nginx:latest \"nginx -g 'daemon ...\" 2 minutes ago Up 2 minutes 80\/tcp angry_northcutt\r\n\r\n# docker stop angry_northcutt\r\nangry_northcutt\r\n\r\n# docker rm `docker ps -a -q`\r\n48d5bf14252f\r\n5f357e0a1a1d<\/pre>\n<p>Zr\u00f3bmy teraz przekierowanie aby strona uruchomiona w kontenerze by\u0142a dost\u0119pna z zewn\u0105trz. Odpowiada za to parametr -P<\/p>\n<pre class=\"lang:sh decode:true\"># docker images\r\nREPOSITORY TAG IMAGE ID CREATED SIZE\r\ncentos latest 1e1148e4cc2c 2 weeks ago 202MB\r\nnginx latest 568c4670fa80 3 weeks ago 109MB\r\ndocker\/whalesay latest 6b362a9f73eb 3 years ago 247MB\r\n\r\n# docker run -d --name=MyWebserver1 -P nginx:latest\r\n0cf60632d50c4d3ce4ecaf0742ec9053bf1784e1caaca63d70d91446d955c973\r\n\r\n# docker ps\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n0cf60632d50c nginx:latest \"nginx -g 'daemon ...\" 10 seconds ago Up 9 seconds 0.0.0.0:32768-&gt;80\/tcp MyWebserver1<\/pre>\n<p>Sprawdzamy czy na porcie 32768 odezwie si\u0119 NGINX<\/p>\n<pre class=\"lang:sh decode:true\"># elinks http:\/\/localhost:32768<\/pre>\n<p>Uruchomiony NGINX w kontenerze jest teraz dost\u0119pny na porcie 32768.<\/p>\n<p>Informacje o przekierowaniach port\u00f3w w kontenerach uzyskamy po wpisaniu komendy:<\/p>\n<pre class=\"lang:sh decode:true\"># docker port MyWebserver1 $CONTAINERPORT\r\n80\/tcp -&gt; 0.0.0.0:32768<\/pre>\n<p>Zatrzymajmy nasz kontener:<\/p>\n<pre class=\"lang:sh decode:true\"># docker stop MyWebserver1<\/pre>\n<p>Teraz wybieramy jaki port zewn\u0119trzny ma by\u0107 przekierowany na konkretny port kontenera<\/p>\n<pre class=\"lang:sh decode:true \"># docker run -d -p 8080:80 --name=MyWebserver2 nginx:latest\r\n# docker ps\r\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\r\n2231209b1b04 nginx:latest \"nginx -g 'daemon ...\" 24 seconds ago Up 24 seconds 0.0.0.0:8080-&gt;80\/tcp MyWebserver2<\/pre>\n<p>Sprawdzamy czy NGINX jest dost\u0119pny na orcie 8080:<\/p>\n<pre class=\"lang:sh decode:true \"># elinks http:\/\/localhost:8080<\/pre>\n<p>Jest dost\u0119pny.<\/p>\n<p>Zatrzymujemy nasz kontener:<\/p>\n<pre class=\"lang:sh decode:true \"># docker stop MyWebserver2\r\nMyWebserver2<\/pre>\n<p>&nbsp;<\/p>\n<p>Uruchamianie webserwera w konkretnym katalogu w kontenerze:<\/p>\n<pre class=\"lang:sh decode:true\"># docker run -d -p 8080:80 --name=MyWebserver3 -v \/mnt\/data nginx:latest<\/pre>\n<p>Jak jest taka potrzeba to zatrzymujemy kontener:<\/p>\n<pre class=\"lang:sh decode:true \"># docker stop MyWebserver3\r\nMyWebserver3<\/pre>\n<p>&nbsp;<\/p>\n<p>Mapowanie katalogu zewn\u0119trznego do katalogu wewn kontenera<\/p>\n<pre class=\"lang:sh decode:true \"># pwd\r\n\/media\r\n\r\n\r\n# mkdir www\r\n\r\n# cd www\r\n[www]# vim index.html\r\n&lt;html&gt;\r\n&lt;head&gt;&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;hr\/&gt;\r\nTo jest strona testowa\r\n&lt;hr\/&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n\r\n# docker run -d -p 8080:80 --name=MyWebserver4 -v \/media\/www:\/usr\/share\/nginx\/html nginx:latest<\/pre>\n<p>Test:<\/p>\n<pre class=\"lang:sh decode:true \"># elinks http:\/\/localhost:8080<\/pre>\n<p>Na porcie 8080 localhosta uruchomi\u0142a si\u0119 strona testowa.<\/p>\n<p>Zamykamy nasz kontener i wszystkie inne w dockerze.<\/p>\n<pre class=\"lang:sh decode:true \"># docker stop MyWebserver4\r\nMyWebserver4\r\n# docker rm `docker ps -a -q`<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nast\u0119pna cz\u0119\u015b\u0107 kursu Dockera. Tym razem o przekierowaniach port\u00f3w oraz o woluminach.<\/p>\n","protected":false},"author":1,"featured_media":2513,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2511"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2511"}],"version-history":[{"count":8,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2511\/revisions"}],"predecessor-version":[{"id":2520,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/2511\/revisions\/2520"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media\/2513"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2511"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}