{"id":1504,"date":"2016-02-08T08:05:00","date_gmt":"2016-02-08T07:05:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=1504"},"modified":"2023-08-16T14:45:49","modified_gmt":"2023-08-16T12:45:49","slug":"docker-kontener-polecenia","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/docker-kontener-polecenia\/","title":{"rendered":"Docker: kontener, polecenia"},"content":{"rendered":"\n<p>Przeznaczeniem kontenera jest jedno lub wielokrotne wykonanie pewnej czynno\u015bci okre\u015blonej przez w\u0142a\u015bciciela kontenera. Dzia\u0142aj\u0105cy kontener opr\u00f3cz swojego podstawowego zadania mo\u017ce wykonywa\u0107 dowolne inne polecenia. <\/p>\n\n\n\n<p>Bior\u0105c pod uwag\u0119 ide\u0119 kontenera dodatkowe polecenia powinny wspomaga\u0107 dzia\u0142anie podstawowego polecenie. Je\u017celi kontener wykonuje czynno\u015bci, kt\u00f3re mo\u017cna odseparowa\u0107 wtedy powinny zosta\u0107 stworzone osobne kontenery, ka\u017cdy z osobnym i\u00a0pojedynczym przeznaczeniem. Celem tego wpisu jest przybli\u017cenie zagadnienia wykonywania polece\u0144 przez kontener.<\/p>\n\n\n\n<p><em>Ten wpis jest cz\u0119\u015bci\u0105 serii wpis\u00f3w o Dockerze. Je\u017celi jakie\u015b poj\u0119cie jest u\u017cywane bez wyja\u015bnienia to prawdopodobnie zosta\u0142o wprowadzone w&nbsp;jednym z wcze\u015bniejszych wpis\u00f3w.<\/em><\/p>\n\n\n\n<p>* Zach\u0119camy r\u00f3wnie\u017c do&nbsp;<strong>zapoznania si\u0119 z od\u015bwie\u017conymi w grudniu 2021 i styczniu 2022 artyku\u0142ami nt. Dockera<\/strong>, kt\u00f3re znajdziecie pod tym wpisem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nadpisanie g\u0142\u00f3wnego polecenia kontenera<\/h2>\n\n\n\n<p>Ka\u017cdy kontener posiada polecenie, kt\u00f3re jest wykonywane podczas jego uruchomienia. Je\u017celi polecenie nie zostanie podane jako parametr komendy <code>docker run<\/code> wtedy kontener przyjmie polecenie okre\u015blone w swoim obrazie. Czas dzia\u0142ania kontenera (status &#8222;up&#8221;) jest to\u017csamy z czasem wykonywania jego polecenia.<\/p>\n\n\n\n<p>Polecenie obrazu <code>ubuntu<\/code> to <code>\/bin\/bash<\/code> dlatego po uruchomieniu jego kontenera mogli\u015bmy odnie\u015b\u0107 wra\u017cenie, \u017ce nic si\u0119 nie sta\u0142o. \u017beby nadpisa\u0107 polecenie obrazu nale\u017cy stworzy\u0107 kontener z&nbsp;dodatkowym parametrem.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker run &#x5B;nazwa obrazu] &#x5B;polecenie]\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker run ubuntu sleep 10\n<\/pre><\/div>\n\n\n<p>W wyniku powy\u017cszego wywo\u0142ania zostanie stworzony i&nbsp;uruchomiony kontener obrazu <code>ubuntu<\/code> o&nbsp;losowej nazwie. Kontener wykona polecenie <code>sleep 10<\/code> (odczeka 10 sekund), a&nbsp;nast\u0119pnie zostanie zatrzymany. Ka\u017cde kolejne wywo\u0142anie tego polecenia spowoduje utworzenie nowego kontenera o&nbsp;takim samym przeznaczeniu (poleceniu). Polecenie <code>sleep<\/code> stanowi tylko prosty przyk\u0142ad. W&nbsp;praktyce kontener mo\u017ce wykonywa\u0107 dowolnie z\u0142o\u017cone polecenie. Jedynym wymogiem jest zapewnienie kontenerowi odpowiednich zasob\u00f3w, np. zale\u017cnych pakiet\u00f3w, innych us\u0142ug, mocy obliczeniowej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wykonanie polecenia na dzia\u0142aj\u0105cym kontenerze<\/h2>\n\n\n\n<p>Je\u017celi kontener jest uruchomiony (status &#8222;up&#8221;) mo\u017cemy wykona\u0107 na nim dowolne polecenie za pomoc\u0105 wywo\u0142ania:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker exec &#x5B;id lub nazwa kontenera] &#x5B;polecenie]\n<\/pre><\/div>\n\n\n<p>Kontener obrazu <code>ubuntu<\/code> z&nbsp;poleceniem <code>sleep 10<\/code> dzia\u0142a tylko przez 10 sekund. \u017beby komfortowo przetestowa\u0107 komend\u0119 <code>docker exec<\/code> powinni\u015bmy uruchomi\u0107 kontener z&nbsp;poleceniem, kt\u00f3re nie niesie ze sob\u0105 ogranicze\u0144 czasowych. Stw\u00f3rzmy kontener serwera bazy danych postgres. Domy\u015blne polecenie obrazu <code>postgres<\/code> uruchamia serwer bazy danych. Czas dzia\u0142ania takiego kontenera b\u0119dzie to\u017csamy z&nbsp;czasem dzia\u0142ania serwera bazy danych.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker run --name=&quot;postgres-container&quot; postgres\n<\/pre><\/div>\n\n\n<p>Za pomoc\u0105 polecenia <code>psql -U postgres -c\"\\list\"<\/code> wy\u015bwietlmy list\u0119 baz danych dost\u0119pnych w&nbsp;kontenerze.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker exec postgres-container psql -U postgres -c&quot;\\list&quot;\n<\/pre><\/div>\n\n\n<p>Powinni\u015bmy zobaczy\u0107 domy\u015bln\u0105 list\u0119 baz danych:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   \n-----------+----------+----------+------------+------------+-----------------------\n postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | \n &#x5B;...]\n<\/pre><\/div>\n\n\n<p>Stw\u00f3rzmy w\u0142asna baz\u0119 danych o&nbsp;nazwie &#8222;<a href=\"http:\/\/sii.pl\/offer-page\/bpm\/\" target=\"_blank\" rel=\"noopener\">docker<\/a>&#8222;.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\ndocker exec postgres-container psql -U postgres -c&quot;CREATE DATABASE docker&quot;\n<\/pre><\/div>\n\n\n<p>Po ponownym wy\u015bwietleniu baz danych powinni\u015bmy zobaczy\u0107 list\u0119 powi\u0119kszon\u0105 o&nbsp;baz\u0119 &#8222;docker&#8221;<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\n   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   \n-----------+----------+----------+------------+------------+-----------------------\n docker    | postgres | UTF8     | en_US.utf8 | en_US.utf8 | \n postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |\n &#x5B;...]\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">* Zaktualizowane w 2021 i 2022 artyku\u0142y nt. Dockera<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-dla-programistow-co-to-jest\/?category=development-na-twardo&amp;tag=devops,docker,kontener\" target=\"_blank\" rel=\"noopener\" class=\"ek-link\">Docker dla programist\u00f3w: co to jest?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-dla-programistow-instalacja-i-budowanie-pierwszego-srodowiska\/?category=development-na-twardo&amp;tag=devops,docker,postgresql\" target=\"_blank\" rel=\"noopener\" class=\"ek-link\">Docker dla programist\u00f3w \u2013 budowa pierwszego \u015brodowiska. Cz\u0119\u015b\u0107 I<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-dla-programistow-budowa-srodowiska-rozwojowego-cz-2\/?category=development-na-twardo&amp;tag=camunda,devops,docker\" target=\"_blank\" rel=\"noopener\" class=\"ek-link\">Docker dla programist\u00f3w \u2013 budowa \u015brodowiska rozwojowego. Cz\u0119\u015b\u0107 II<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-dla-programistow-dystrybucja-aplikacji-cz-3\/?category=development-na-twardo&amp;tag=devops,docker,docker-maven-plugin\" target=\"_blank\" rel=\"noopener\" class=\"ek-link\">Docker dla programist\u00f3w \u2013 dystrybucja aplikacji\u00a0<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Spis wpis\u00f3w w serii<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-obraz-podstawowe-operacje\/?category=development-na-twardo&amp;tag=docker,obraz\" target=\"_blank\" rel=\"noopener\">Obraz: podstawowe operacje<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-podstawowe-operacje\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: podstawowe operacje<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-polecenia\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: polecenia<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-strumienie-wewy-i-przegladanie-plikow\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: strumienie we\/wy i przegl\u0105danie plik\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-udostepnianie-portow\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: udost\u0119pnianie port\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-wspoldzielenie-plikow\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: wsp\u00f3\u0142dzielenie plik\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/docker-kontener-zmienne-srodowiskowe\/?category=development-na-twardo&amp;tag=docker,kontener\" target=\"_blank\" rel=\"noopener\">Kontener: zmienne \u015brodowiskowe<\/a><\/li>\n<\/ul>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;1504&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;5&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;4\\\/5 ( votes: 5)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Docker: kontener, polecenia&quot;,&quot;width&quot;:&quot;110.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 110.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            4\/5 ( votes: 5)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Przeznaczeniem kontenera jest jedno lub wielokrotne wykonanie pewnej czynno\u015bci okre\u015blonej przez w\u0142a\u015bciciela kontenera. Dzia\u0142aj\u0105cy kontener opr\u00f3cz swojego podstawowego zadania mo\u017ce &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/docker-kontener-polecenia\/\">Continued<\/a><\/p>\n","protected":false},"author":61,"featured_media":15409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":2,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[153,224],"class_list":["post-1504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-docker","tag-kontener"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/02\/25_docker_4-1.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1504"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/61"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=1504"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1504\/revisions"}],"predecessor-version":[{"id":23513,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/1504\/revisions\/23513"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/15409"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=1504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=1504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=1504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}