Docker. Praktyczne zastosowania [Karl Matthias, Sean P. Kane] << KLIKAJ I CZYTAJ ONLINE\n00573 008360 20597039 na godz. na dobę w sumie\nAutor: Karl Matthias, Sean P. Kane Liczba stron: 208\nISBN: 978-83-283-2905-8 Data wydania:\nTytuł oryginału: Docker: Up and Running Tłumaczenie: Andrzej Stefański ISBN: 978-83-283-2904-1 © 2017 Helion SA Authorized Polish translation of the English edition of Docker: Up and Running, ISBN 9781491917572 © 2015 Karl Matthias, Sean P. Kane. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/docker Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Przedmowa .............................................................................................................. 11 Wstęp ....................................................................................................................... 15 Narodziny Dockera Co obiecuje Docker 1. Wprowadzenie .......................................................................................................... 19 19 19 21 23 Korzyści płynące ze stosowania procesów proponowanych przez Dockera Czym Docker nie jest Upraszczanie procesów Duże wsparcie i wykorzystanie Architektura Model klient-serwer Porty sieciowe i gniazdka sieciowe Rozbudowane narzędzia Tekstowy klient Dockera API Sieć w kontenerze 2. Rzut oka na Dockera .................................................................................................. 25 25 27 28 28 29 29 30 30 31 32 33 33 33 34 34 35 Kontenery to nie maszyny wirtualne Kontenery są lekkie Dążenie do niezmienności infrastruktury Ograniczona izolacja Aplikacje bezstanowe Przenoszenie informacji o stanie na zewnątrz Najlepsze zastosowania Dockera 5 Poleć książkęKup książkę\n3. Schemat pracy z Dockerem Wersjonowanie Budowanie Testowanie Tworzenie pakietów Wdrażanie Ekosystem Dockera Podsumowanie 36 36 37 38 38 39 39 41 Serwer Dockera Linux Mac OS X 10.10 Microsoft Windows 8 Instalacja Dockera ..................................................................................................... 43 43 Ważne pojęcia 44 Klient Dockera 45 47 48 48 49 49 49 50 58 58 58 58 59 Linux korzystający z systemd Linux wykorzystujący upstart Linux wykorzystujący init.d Serwery na maszynach wirtualnych Testowanie Ubuntu Fedora CentOS Podsumowanie Zmienne środowiska Anatomia pliku Dockerfile Budowanie obrazu Uruchamianie zbudowanego obrazu 4. Praca z obrazami Dockera .......................................................................................... 61 61 64 68 69 69 70 70 71 71 74 77 Własne obrazy bazowe Zapisywanie obrazów Publiczne rejestry Rejestry prywatne Autoryzacja w rejestrze Tworzenie kopii rejestru Inne sposoby dostarczania obrazów 6 (cid:95) Spis treści Poleć książkęKup książkę\nCzym jest kontener? Historia kontenerów Tworzenie kontenera 5. Praca z kontenerami Dockera .................................................................................... 79 79 80 81 82 85 87 92 93 94 95 96 96 98 Podstawowa konfiguracja Magazyny danych Ograniczenia zasobów Uruchamianie kontenera Automatyczne restartowanie kontenera Zatrzymywanie kontenera Wymuszanie zakończenia pracy kontenera Pauzowanie i wznawianie pracy kontenera Czyszczenie kontenerów i obrazów Kolejne kroki docker exec nsenter Wyświetlanie wersji Dockera Informacje o serwerze Pobieranie aktualizacji obrazów Pobieranie informacji o kontenerze Wnętrze działającego kontenera 6. Poznawanie Dockera ................................................................................................. 99 99 100 101 102 103 103 104 107 107 109 112 112 115 116 120 Badanie powłoki Zwracanie wyniku Logi Dockera Monitorowanie Dockera Statystyki kontenerów docker events cAdvisor Dalsze eksperymenty Wdrażanie 7. Tworzenie kontenerów produkcyjnych .....................................................................121 121 122 123 123 125 125 125 128 Klasy narzędzi Narzędzia do koordynacji Narzędzia do planowania przetwarzania rozproszonego Podsumowanie Szybki przegląd Zewnętrzne zależności Testowanie kontenerów Spis treści (cid:95) 7 Poleć książkęKup książkę\n8. Debugowanie kontenerów ...................................................................................... 129 129 133 134 135 136 136 138 138 Dane generowane przez proces Przeglądanie procesów Kontrolowanie procesów Przeglądanie sieci Historia obrazów Przeglądanie kontenera Przeglądanie systemu plików Dalsze kroki Docker Swarm Centurion Amazon EC2 Container Service 9. Skalowanie Dockera ................................................................................................ 139 140 144 148 148 149 150 153 157 158 159 Konfiguracja IAM Przygotowanie AWS CLI Instancje kontenerów Zadania Testowanie zadania Zatrzymywanie zadania Podsumowanie Sterownik uruchamiania Magazyny danych Szczegółowo o kontenerach Mechanizmy wymienne 10. Zagadnienia zaawansowane ................................................................................... 161 161 161 163 166 166 169 173 173 178 180 Grupy kontrolne (cgroups) Przestrzeń nazw jądra, przestrzeń nazw użytkownika Czy kontener jest bezpieczny? Czy demon Dockera jest bezpieczny? Bezpieczeństwo Sieć 12factor 11. Projektowanie produkcyjnej platformy dla kontenerów ........................................... 185 186 186 186 188 190 190 Repozytorium kodów Zależności Konfiguracja Usługi pomocnicze Budowanie, udostępnianie, uruchamianie 8 (cid:95) Spis treści Poleć książkęKup książkę\nProcesy Wykorzystanie portów Współbieżność Dyspozycyjność Podobieństwo środowiska programistycznego i produkcyjnego Logi Procesy administracyjne Podsumowanie twelve-factor The Reactive Manifesto Responsywność Stabilność Elastyczność Obsługa komunikatów Podsumowując 190 191 191 192 192 193 193 194 194 194 194 194 195 195 12. Wnioski ...................................................................................................................197 197 198 198 199 199 200 Wyzwania Przepływ pracy w Dockerze Minimalizowanie liczby obiektów do wdrożenia Optymalizacja przechowywania i przesyłania danych Korzyści Słowo końcowe Skorowidz ................................................................................................................201 Spis treści (cid:95) 9 Poleć książkęKup książkę\nROZDZIAŁ 2. Rzut oka na Dockera Zanim zagłębimy się w konfigurowanie i instalowanie Dockera, zaczniemy od szybkiego wpro- wadzenia, by wytłumaczyć, czym jest Docker i co wnosi. Jest to potężna technologia, ale niezbyt skomplikowana. W tym rozdziale omówimy ogólne podstawy działania Dockera, powiemy, co czyni go tak potężnym, i przedstawimy kilka powodów, by z niego skorzystać. Jeśli to czytasz, masz prawdopodobnie własne powody, by go wykorzystać, ale nie zaszkodzi poszerzyć swoją wiedzę przed zagłębieniem się w szczegóły. Nie obawiaj się — nie zatrzyma Cię to na zbyt długo. W kolejnym rozdziale zajmiemy się od razu instalacją i uruchomieniem Dockera w Twoim systemie. Upraszczanie procesów Docker może uprościć zarówno przepływ pracy, jak i komunikację, ale zazwyczaj to tylko począ- tek wdrożenia. Tradycyjny cykl produkcyjnego wdrażania aplikacji często wygląda podobnie do poniższego (pokazano go też na rysunku 2.1): Rysunek 2.1. Przebieg tradycyjnego wdrożenia (bez Dockera) 25 Poleć książkęKup książkę\n1. Programiści tworzący aplikację zgłaszają zapotrzebowanie na zasoby od inżynierów odpo- wiedzialnych za utrzymanie. 2. Zasoby są dostarczane i przekazywane programistom. 3. Programiści tworzą skrypty i narzędzia do wdrożenia. 4. Inżynierowie odpowiedzialni za utrzymanie i programiści iteracyjnie wprowadzają poprawki w procesie wdrożenia. 5. Programiści odkrywają kolejne zależności aplikacji. 6. Inżynierowie odpowiedzialni za utrzymanie instalują wszystkie dodatkowe zasoby. 7. Kroki 5. i 6. powtarzane są n razy. 8. Aplikacja zostaje wdrożona. Z naszego doświadczenia wynika, że wdrożenie nowej aplikacji w środowisku produkcyjnym może zająć w przypadku nowych, złożonych systemów większą część tygodnia. Nie jest to zbyt produk- tywne i nawet jeśli praktyki DevOps pozwalają zmniejszyć niektóre z tych barier, często wymagają wiele wysiłku i komunikacji między zespołami ludzi. Ten proces może być często wyzwaniem technicznym i nieść ze sobą duże koszty, a co gorsza, może ograniczać zakres innowacji, jakie ze- spół programistów będzie wprowadzał w przyszłości. Jeśli wdrożenie oprogramowania jest proce- sem trudnym, czasochłonnym i wymagającym zasobów innego zespołu, programiści często wbu- dowują wszystko w istniejącą aplikację, aby uniknąć trudności związanych z nowym wdrożeniem. Systemy pozwalające na automatyzację wdrożenia, takie jak Heroku (https://www.heroku.com/), pokazały programistom, jak może wyglądać świat, jeśli masz kontrolę nad większością wykorzy- stywanych zasobów oraz nad samą aplikacją. Rozmowa z programistami na temat wdrożenia często kończy się dyskusją na temat tego, jaki ten świat jest prosty. Jeśli jesteś inżynierem odpowiedzialnym za utrzymanie, prawdopodobnie słyszałeś narzekania na to, o ile wolniejsze są Twoje wewnętrzne systemy w porównaniu z wdrażaniem z Heroku. Docker nie próbuje być Heroku, ale umożliwia przejrzyste rozgraniczenie odpowiedzialności i dołą- czenie zależności, co w rezultacie daje podobny wzrost produktywności. Umożliwia też jeszcze dokładniejszą kontrolę niż Heroku, dając programistom kontrolę nad wszystkim aż do poziomu dystrybucji systemu operacyjnego, na którym działa dostarczana przez nich aplikacja. Jako firma Docker propaguje podejście „baterie dołączone, ale wymienne”. Oznacza to, że stara się dostarczać swoje narzędzia wraz ze wszystkim, czego większość użytkowników będzie potrze- bowała do ich użycia. Jednocześnie jednak poszczególne części można w łatwy sposób zamieniać, by dostosować je do konkretnych zastosowań. Korzystając z repozytorium obrazów jako punktu wyjścia, Docker umożliwia oddzielenie odpo- wiedzialności za kompilację obrazu aplikacji od wdrożenia i utrzymania kontenera. W praktyce oznacza to, że zespoły odpowiedzialne za programowanie mogą kompilować swoje aplikacje wraz ze wszystkimi zależnościami, uruchamiać je w środowiskach deweloperskich i te- stowych, a następnie umieszczać ten sam zestaw zawierający aplikację i jej zależności w środowi- sku produkcyjnym. Ponieważ wszystkie te pakiety z zewnątrz wyglądają tak samo, inżynierowie odpowiedzialni za utrzymanie mogą następnie utworzyć lub zainstalować standardowe narzędzia 26 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\numożliwiające wdrożenie i uruchomienie aplikacji. Cykl opisany na rysunku 2.1 dzięki temu wy- gląda podobnie do poniższego (pokazanego również na rysunku 2.2): (cid:120) Programiści przygotowują obraz Dockera i przekazują go do rejestru. (cid:120) Inżynierowie odpowiedzialni za utrzymanie dodają szczegóły konfiguracyjne do kontenera i przygotowują zasoby. (cid:120) Deweloperzy uruchamiają wdrożenie. Rysunek 2.2. Proces wdrożenia z Dockerem Jest to możliwe, ponieważ Docker pozwala wykryć wszystkie problemy z zależnościami podczas programowania i cykli testowych. Gdy aplikacja jest gotowa do pierwszego wdrożenia, ta praca jest już wykonana. Nie wymaga to też zazwyczaj tylu iteracji przekazywania informacji pomiędzy zespołami odpowiedzialnymi za programowanie i utrzymanie. Jest dużo prostsze i oszczędza wiele czasu. Co więcej, prowadzi do uzyskania oprogramowania o lepszej jakości dzięki testowaniu środowiska wdrożenia przed wydaniem kolejnej wersji. Duże wsparcie i wykorzystanie Docker jest coraz lepiej wspierany. Większość dużych publicznych chmur ogłosiła przynajmniej częściowe bezpośrednie jego wsparcie. Docker działa w AWS Elastic Beanstalk, Google AppEngine, IBM Cloud, Microsoft Azure, Rackspace Cloud i wielu innych chmurach. Na DockerCon 2014 Eric Brewer z Google ogłosił, że firma ta będzie wspierała Dockera jako swój podstawowy wewnętrzny format kontenerów. Dla społeczności Dockera oznacza to nie tylko dobry PR, ale przede wszyst- kim to, że wielkie pieniądze zaczną wspierać stabilność Dockera i przyczyniać się do jego sukcesu. Kontenery Dockera umacniają swoją pozycję — stają się popularnym formatem wśród firm dostarczających platformy chmurowe i pozwalają tworzyć aplikacje chmurowe typu „napisz raz, uruchamiaj wszędzie”. Gdy Docker zaprezentował swoją bibliotekę libswarm na DockerCon 2014, inżynier z Orchard zademonstrował wdrożenie kontenera Dockera w heterogenicznym środowisku złożonym z wielu chmur. Tego rodzaju zarządzanie nie było dotąd tak łatwe i jest Duże wsparcie i wykorzystanie (cid:95) 27 Poleć książkęKup książkę\nprawdopodobne, że gdy największe firmy nadal będą inwestować w platformę, wsparcie i narzę- dzia będą stawały się coraz lepsze. Powiedzieliśmy o kontenerach i narzędziach Dockera, ale co ze wsparciem producentów systemów operacyjnych i ich wykorzystaniem? Klient Dockera działa bezpośrednio w większości najważ- niejszych systemów operacyjnych, ale dlatego, że serwer Dockera korzysta z kontenerów linuk- sowych, nie uruchamia się w systemach innych niż Linux. Docker był tworzony w dystrybucji Ubuntu Linux, ale większość dystrybucji Linuksa i inne największe systemy operacyjne są teraz obsługiwane, jeśli tylko jest to możliwe. Gdy Docker miał zaledwie dwa lata, wspierał już wiele platform. Wraz z utworzeniem The Open Container Initiative (https://www.opencontainers.org/) w czerwcu 2015 roku zwiększyły się nadzieje na przygotowanie porządnego standardu branżowego dla kontenerów i dalszy rozwój Dockera. Architektura Docker jest potężną technologią, często oznaczającą coś bardzo skomplikowanego. Podstawowa architektura Dockera to jednak prosty model klient-serwer z jednym tylko modułem wykonywal- nym, który obsługuje oba komponenty w zależności od tego, z jakimi parametrami zostanie uru- chomiony. Pod tą prostą powłoką zewnętrzną Docker intensywnie wykorzystuje mechanizmy jądra takie jak iptables, wirtualne mostkowanie, cgroups, przestrzenie nazw i różne sterowniki systemów plików. Niektóre z nich omówimy w rozdziale 10. Na razie skupimy się na tym, w jaki sposób dzia- łają klient i serwer oraz krótko omówimy warstwę sieciową znajdującą się w kontenerze Dockera. Model klient-serwer Docker składa się z co najmniej dwóch części: klienta oraz serwera-demona (patrz rysunek 2.3). Opcjonalnie pojawia się trzeci komponent, nazywany rejestrem, który przechowuje obrazy Doc- kera i metadane opisujące te obrazy. Serwer zajmuje się uruchamianiem kontenerów i zarządza- niem nimi, a z klienta korzysta się, by przekazać serwerowi, co jest do zrobienia. Demon Dockera (http://bit.ly/2dGp26h) może działać na dowolnej liczbie serwerów należących do infrastruktury, a pojedynczy klient może komunikować się z dowolną liczbą serwerów. Całą komunikację ini- cjują klienci, a serwery Dockera mogą kierować się bezpośrednio do rejestrów z obrazami, jeśli dostaną od klienta takie polecenie. Klienci są odpowiedzialni za wyznaczanie serwerom, co jest do zrobienia, a serwery skupiają się na utrzymywaniu kontenerów z aplikacjami. Rysunek 2.3. Model klient-serwer w Dockerze 28 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nStruktura Dockera odrobinę różni się od niektórych innych rozwiązań typu klient-serwer. Zamiast oddzielnych modułów wykonywalnych klienta i serwera wykorzystywany jest ten sam kod dla obu komponentów. Instalując Dockera, otrzymujesz oba komponenty, ale serwer uruchomi się jedynie w systemie Linux. Uruchomienie serwera-demona Dockera wymaga jedynie wywołania Dockera z parametrem -d, który sprawia, że uruchomiony program pracuje jako demon i nasłuchuje w ocze- kiwaniu na przychodzące połączenia. Każdy komputer z Dockerem powinien mieć zazwyczaj jeden działający demon Dockera, który może zarządzać wieloma kontenerami. W takiej sytuacji można korzystać z działającego w trybie tekstowym klienta do komunikacji z demonem. Porty sieciowe i gniazdka sieciowe Działające w trybie tekstowym narzędzie oraz demon wywoływany za pomocą polecenia docker -d porozumiewają się poprzez gniazdka sieciowe. Możesz skonfigurować demon Dockera w taki spo- sób, by nasłuchiwał na jednym gniazdku TCP lub Unix albo większej liczbie gniazdek. Można na przykład sprawić, by Docker nasłuchiwał zarówno na lokalnym gniazdku Unix, jak i dwóch róż- nych portach TCP (szyfrowanym i nieszyfrowanym). W wielu dystrybucjach systemu Linux jest to ustawienie domyślne. Jeśli chcesz ograniczyć możliwość dostępu do lokalnego systemu, naj- bezpieczniejszą opcją będzie nasłuchiwanie jedynie na gniazdku Unix. Większość użytkowników chce jednak komunikować się z demonem Dockera zdalnie, dlatego najczęściej nasłuchuje on przynajmniej na jednym porcie TCP. Pierwotnie Docker nasłuchiwał na porcie 4243, ale port ten nigdy nie został zarejestrowany, a w za- sadzie był już wykorzystywany przez inne narzędzie — program do tworzenia kopii zapasowych CrashPlan, działający w systemie Mac OS X. W efekcie dla Dockera został zarejestrowany w IANA inny port TCP i obecnie zazwyczaj jest on konfigurowany w taki sposób, że korzysta z portu 2375 TCP do komunikacji nieszyfrowanej i 2376 — do obsługi ruchu szyfrowanego. W Dockerze 1.3 i późniejszych domyślnie wykorzystywany jest szyfrowany port 2376, ale łatwo zmienić tę konfigurację. Gniazdko Unix znajduje się w różnych miejscach w zależności od systemu operacyjnego, dlatego musisz sprawdzić, gdzie umieszczone jest w Twoim przypadku. Jeśli bar- dzo Ci na tym zależy, możesz łatwo to zmienić podczas instalacji. W przeciwnym razie powinna się sprawdzić wartość domyślna. Rozbudowane narzędzia Jednym z wielu czynników, jakie doprowadziły do rosnącego wykorzystania Dockera, jest jego prosty, ale potężny zestaw narzędzi. Zestaw ten ciągle się powiększa od chwili udostępnienia Dockera i w dużej mierze dzieje się tak dzięki społeczności skupionej wokół Dockera. Narzędzia dostarczane z Dockerem służą do tworzenia jego obrazów i ich wdrażania na lokalnych serwerach Dockera, ale też zawierają wszystkie mechanizmy niezbędne do zarządzania zdalnym serwerem Dockera. Wysiłek społeczności skupił się na zarządzaniu całymi flotami (czy klastrami) serwerów Dockera oraz na planowaniu i koordynowaniu wdrażania kontenerów. Twórcy Dockera również pracują nad zestawem tego typu narzędzi, w skład których wchodzą: Compose (https://github. com/docker/compose) (wcześniej znany jako Fig), Machine (https://github.com/docker/machine) oraz Swarm (https://github.com/docker/swarm/), których zadaniem jest umożliwienie wykonania spójnego wdrożenia w różnych środowiskach. Architektura (cid:95) 29 Poleć książkęKup książkę\nPonieważ Docker dostarcza zarówno narzędzie pracujące w trybie tekstowym, jak i dostępne zdalnie API, tworzenie narzędzi w dowolnym języku jest proste. Narzędzie działające w trybie tekstowym dobrze nadaje się do tworzenia skryptów, dzięki czemu za pomocą prostych skryptów powłoki korzystających z tego narzędzia można sporo osiągnąć. Tekstowy klient Dockera Narzędzie Dockera pracujące w trybie tekstowym jest jego najważniejszym interfejsem, z jakim większość użytkowników będzie miała do czynienia. Jest to napisany w języku Go (https://golang.org/) program, który kompiluje się we wszystkich popularnych systemach operacyjnych i na wszystkich architekturach procesorów. Narzędzie to jest częścią podstawowej dystrybucji Dockera na różnych platformach i również kompiluje się bezpośrednio ze źródeł Go. Wśród czynności, które można wykonać za pomocą tego narzędzia, są między innymi: (cid:120) tworzenie obrazów kontenera, (cid:120) pobieranie obrazów z rejestru do demona Dockera i wysyłanie ich do rejestru z demona Dockera, (cid:120) uruchamianie kontenera na serwerze Dockera na pierwszym planie lub w tle, (cid:120) pobieranie logów Dockera ze zdalnego serwera, (cid:120) uruchamianie wiersza poleceń wewnątrz kontenera działającego na zdalnym serwerze. Jak widać, można to wykorzystać w procesie tworzenia i wdrażania. Jednak użycie narzędzia tek- stowego Dockera nie jest jedynym sposobem komunikowania się z Dockerem, a nawet nie jest to narzędzie dające największe możliwości. API Tak jak wiele innych nowoczesnych aplikacji, demon Dockera ma dostępne zdalnie API (ang. Application Programming Interface). W rzeczywistości korzysta z niego też narzędzie tekstowe Dockera do komunikacji z demonem. Ponieważ API jest udokumentowane i dostępne publicznie, często bezpośrednio z niego korzystają narzędzia zewnętrzne. Umożliwia ono tworzenie narzędzi przeznaczonych do różnych celów — od zarządzania wdrożonymi kontenerami na serwerach, przez automatyzację wdrożeń, do rozproszonego planowania. Choć jest bardzo prawdopodobne, że początkujący użytkownicy nie będą chcieli zaczynać od bezpośredniego wykorzystania API Dockera, warto wiedzieć o jego istnieniu. Zwiększając z czasem zakres stosowania Dockera w swojej organizacji, prawdopodobnie zaczniesz coraz bardziej przekonywać się do tego, że API jest dobrym sposobem na integrację z tym narzędziem. Dokładna dokumentacja tego API znajduje się na stronie internetowej Dockera (https://docs.docker. com/reference/api/docker_remote_api/). Wraz z dojrzewaniem całego ekosystemu zaczęły się poja- wiać coraz porządniejsze implementacje bibliotek Docker API dla wielu popularnych języków pro- gramowania. My na przykład korzystaliśmy z bibliotek do języków Go oraz Ruby i okazało się, że są zarówno porządnie napisane, jak i szybko aktualizowane, gdy pojawiają się nowe wersje Dockera. 30 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nWiększość czynności, jakie możesz wykonywać za pomocą narzędzi tekstowych Dockera, można stosunkowo prosto wykonać też za pomocą API. Dwoma ważnymi wyjątkami są przypadki wy- magające strumieniowania lub dostępu do terminala: uruchamianie zdalnego wiersza poleceń i uruchamianie kontenera w trybie interaktywnym. W tych przypadkach często prościej jest ko- rzystać z narzędzia wiersza poleceń. Sieć w kontenerze Choć kontenery Dockera składają się w zdecydowanej większości z procesów działających w sa- mym systemie hosta, zachowują się one zupełnie inaczej niż inne procesy w warstwie sieci. Jeśli przyjmiesz, że każdy kontener Dockera zachowuje się w sieci jak komputer w prywatnej sieci lokalnej, będziesz na właściwej drodze. Serwer Dockera działa jako wirtualny most sieciowy, a kontenery są klientami połączonymi za jego pomocą. Most sieciowy to urządzenie, które przeka- zuje ruch z jednej strony na drugą. Możesz przyjąć, że jest to miniaturowa wirtualna sieć z podłą- czonymi do niej komputerami. Zostało to zaimplementowane w taki sposób, że każdy kontener ma swój własny interfejs sieciowy podłączony do mostka sieciowego Dockera z własnym adresem IP przypisanym do wirtualnego interfejsu. Docker pozwala łączyć porty serwera z portami kontenera w taki sposób, by kontener był dostępny z zewnątrz. Taki ruch przed dotarciem do kontenera przechodzi przez mechanizm proxy, który również jest częścią serwera Dockera. Bardziej szczegółowe informacje możesz zna- leźć w rozdziale 10. Docker tworzy prywatną podsieć, wykorzystując wolny blok podsieci prywatnej według RFC 1918 (https://tools.ietf.org/html/rfc1918). Podczas startu sprawdza, które bloki sieciowe nie są wykorzy- stywane, po czym jeden z nich przypisuje do swojej sieci wirtualnej. Jest to połączone mostem z sie- cią lokalną hosta za pomocą dostępnego na serwerze interfejsu docker0. Oznacza to, że wszystkie kontenery znajdują się w jednej sieci i mogą się ze sobą bezpośrednio porozumiewać. Aby jednak dostać się do hosta lub wyjść na zewnątrz, muszą one przejść przez interfejs wirtualnego mostu docker0. Jak już wspomnieliśmy, ruch przychodzący przechodzi przez mechanizm proxy. Ma on stosunkowo dużą wydajność, ale może się okazać ograniczeniem, jeśli uruchomisz w kontenerach aplikacje przesyłające dużo danych. Więcej na ten temat powiemy podczas omawiania innych za- gadnień sieciowych w rozdziale 10., gdzie zaproponujemy również kilka rozwiązań. Liczba sposobów, na jakie można skonfigurować warstwę sieciową Dockera, jest zdumiewająca. Obejmuje mechanizmy począwszy od alokowania własnych segmentów sieciowych po konfigu- rowanie własnych, dopasowanych mostów sieciowych. Użytkownicy często korzystają z mechani- zmów stosowanych domyślnie, ale czasem zdarza się, że potrzebne jest coś bardziej złożonego lub dopasowanego do konkretnego zastosowania. Dużo więcej szczegółowych informacji na temat mechanizmów sieciowych Dockera można znaleźć w jego dokumentacji (https://docs.docker.com/ engine/userguide/networking/), a my z kolei podamy więcej szczegółów na temat sieci w rozdziale omawiającym zaawansowane zagadnienia. Architektura (cid:95) 31 Poleć książkęKup książkę\nPrzygotowując swoje procesy wykorzystujące Dockera, powinieneś koniecznie zacząć od zastosowania domyślnych mechanizmów sieciowych. Może się potem okazać, że te domyślne mechanizmy są zbędne. Można wszystkie je wyłączyć za pomocą jednego parametru podczas uruchamiania demona Dockera. Nie da się ich konfi- gurować dla każdego kontenera z osobna, ale możesz je wyłączyć dla wszystkich kontenerów za pomocą parametru --net host przekazanego do polecenia docker -d. Gdy Docker jest uruchomiony w tym trybie, kontenery korzystają po prostu z urzą- dzeń sieciowych i adresów hosta. Najlepsze zastosowania Dockera Tak jak większość narzędzi, Docker wspaniale sprawdza się w wielu zastosowaniach, ale w innych nie jest już tak idealny. Możesz na przykład otwierać słoik za pomocą młotka. Ma to jednak pew- ne wady. Zrozumienie, w jaki sposób najlepiej wykorzystać dane narzędzie, lub przynajmniej po prostu ustalenie, czy jest to odpowiednie narzędzie, może naprowadzić Cię na właściwą ścieżkę dużo szybciej. Zacznijmy od tego, że architektura Dockera idealnie sprawdza się w przypadku aplikacji, które są bezstanowe albo w których informacja o stanie jest przechowywana w zewnętrznych magazynach danych takich jak bazy danych lub pamięć podręczna. Docker wymusza stosowanie pewnych do- brych praktyk programistycznych dla tej klasy aplikacji — o tym, dlaczego jest to tak ważne, po- wiemy później. Oznacza to jednak, że takie pomysły, jak umieszczanie bazy danych wewnątrz kontenera Dockera, są po prostu próbą płynięcia pod prąd. Nie chodzi o to, że nie możesz albo nie powinieneś tego zrobić — po prostu nie jest to najbardziej oczywisty sposób wykorzystania Dockera i jeśli od tego zaczniesz, szybko możesz się zniechęcić. Do dobrych zastosowań dla Dockera zaliczamy interfejsy sieciowe, API oraz wykonywanie krótko trwających czynności, takich jak uruchamianie skryptów administracyjnych, które mogą być wywoływane przez cron. Tradycyjne aplikacje są w większości przypadków stanowe, co oznacza, że prze- chowują ważne dane w pamięci, plikach lub bazie danych. Jeśli zrestartujesz usługę stanową, możesz utracić pochodzące z pamięci informacje, które nie zostały jeszcze zapisane na nośniku trwałym. Z drugiej strony bezstanowe aplikacje są zazwyczaj zaprojektowane w taki sposób, by bezzwłocznie odpowiadać na pojedyncze zapy- tania, i nie muszą przechowywać informacji pomiędzy zapytaniami od jednego lub większej liczby klientów. Jeśli na początku skupisz się na zrozumieniu, jak działa w kontenerze aplikacja bezstanowa lub taka, w której informacja o stanie zapisana jest na zewnątrz, zyskasz dobre podstawy do analizo- wania innych przypadków użycia. Bardzo polecamy rozpoczęcie od aplikacji bezstanowych i zdo- bycie w ten sposób pewnego doświadczenia przed przejściem do bardziej zaawansowanych zasto- sowań. Należy zauważyć, że społeczność intensywnie pracuje nad tym, by lepiej wspierać aplikacje stanowe w Dockerze i prawdopodobnie w ciągu najbliższego roku lub kilku lat pojawi się na tym polu wiele nowych rozwiązań. 32 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nKontenery to nie maszyny wirtualne Dobrym punktem wyjścia do zbudowania sobie obrazu tego, w jaki sposób można wykorzystać Dockera, jest przyjęcie, że kontenery to nie wirtualne maszyny, a bardzo lekkie opakowania prze- chowujące pojedyncze procesy systemu Unix. W rzeczywistości taki proces może utworzyć inne procesy, ale z drugiej strony statycznie skompilowany program mógłby stanowić całą zawartość takiego kontenera (więcej informacji na ten temat znajdziesz w punkcie „Zewnętrzne zależności” w rozdziale 7.). Kontenery są też efemeryczne: mogą się pojawiać i znikać dużo łatwiej niż maszy- ny wirtualne. Maszyny wirtualne z założenia zastępują rzeczywisty sprzęt, który możesz umieścić w szafie i po- zostawić tam na kilka lat. Ponieważ zastępują one prawdziwy serwer, często z założenia są utrzy- mywane przez długi czas. Nawet w chmurze, gdzie firmy często uruchamiają i zatrzymują maszy- ny wirtualne na żądanie, średni czas ich działania liczony jest zwykle w dniach. Z kolei kontener może istnieć miesiącami, ale może też zostać utworzony, wykonać przez minutę zadanie, a na- stępnie zostać zniszczony. Wszystko to jest poprawne, z tym że jest to diametralnie inne podejście niż w przypadku typowego zastosowania maszyn wirtualnych. Kontenery są lekkie Szczegółami ich działania zajmiemy się później, ale powiedzmy już teraz, że na utworzenie kon- tenera potrzeba bardzo mało przestrzeni. Szybki test na Dockerze 1.4.1 pokazuje, że nowy konte- ner utworzony z istniejącego obrazu zajmuje całe 12 kilobajtów miejsca na dysku. To dość mało. Z drugiej strony nowa maszyna wirtualna utworzona z wzorcowego obrazu może potrzebować setek lub tysięcy megabajtów. Nowy kontener jest tak mały, ponieważ zawiera jedynie wskaźnik do warstwowego systemu plików i metadanych z informacjami o konfiguracji. Lekkość kontenerów oznacza, że możesz je zastosować tam, gdzie tworzenie kolejnej maszyny wirtualnej byłoby zbyt kosztowne, lub w sytuacjach, w których potrzebujesz czegoś rzeczywiście efemerycznego. Na przykład prawdopodobnie nie uruchomiłbyś całej wirtualnej maszyny, by uruchomić z zewnętrznej maszyny zapytanie curl do serwisu internetowego, ale z kolei do takiego zastosowania możesz utworzyć nowy kontener. Dążenie do niezmienności infrastruktury Wdrażając większość aplikacji w kontenerach, można zacząć upraszczać sobie zarządzanie konfi- guracją, kierując się ku niezmiennej infrastrukturze (ang. immutable infrastructure). Idea nie- zmiennej infrastruktury zyskała ostatnio popularność jako odpowiedź na rzeczywiste trudności pojawiające się przy utrzymywaniu kodu do zarządzania prawdziwie idempotentną konfiguracją. Gdy taki kod się rozrasta, może się stać w utrzymaniu równie nieporęczny i trudny jak wielkie, monolityczne, przestarzałe aplikacje. Za pomocą Dockera można tworzyć bardzo lekkie serwery, które praktycznie nie wymagają zarządzania konfiguracją, a w wielu przypadkach zupełnie jej nie potrzebują. Całe zarządzanie aplikacją polega na prostym uruchamianiu kolejnych kontenerów na serwerze. Gdy konieczna będzie aktualizacja czegoś ważnego, takiego jak demon Dockera lub jądro Linuksa, możesz po prostu uruchomić nowy serwer z wprowadzonymi zmianami, urucho- mić na nim swoje kontenery, a następnie odłączyć lub zaktualizować stary serwer. Najlepsze zastosowania Dockera (cid:95) 33 Poleć książkęKup książkę\nOgraniczona izolacja Kontenery są od siebie odizolowane, ale jest to ograniczone bardziej, niż mógłbyś przypuszczać. Choć możesz ograniczyć ich zasoby, to przy domyślnej konfiguracji kontenera wszystkie one współdzielą zasoby procesora i pamięci systemu operacyjnego hosta, tak jak oczekiwałbyś tego od funkcjonujących na tym samym sprzęcie procesów Unix. Oznacza to, że dopóki nie ograniczysz kontenerów, mogą one rywalizować o zasoby na Twoich maszynach produkcyjnych. Czasem jest to sytuacja pożądana, ale ma to wpływ na podejmowanie decyzji projektowych. Możliwe jest wprowadzenie w Dockerze limitów na wykorzystanie procesora i pamięci, ale w większości sytu- acji nie są one włączone domyślnie tak, jak byłyby w przypadku maszyny wirtualnej. Często zdarza się, że wiele kontenerów dzieli jedną warstwę systemu plików lub więcej takich warstw. Jest to jedna z ważniejszych decyzji projektowych w Dockerze, jednak oznacza to też, że jeśli zaktualizujesz dzielony obraz, będziesz musiał odtworzyć wiele kontenerów. Procesy w kontenerach są też po prostu procesami na samym serwerze Dockera. Działają one, korzystając z dokładnie tej samej instancji jądra Linuksa, co system operacyjny hosta. Pojawiają się one nawet w wynikach działania programu ps na serwerze, na którym działa Docker. Jest to zupełnie inaczej niż w przypadku hipernadzorcy, gdzie stopień izolacji procesów zazwyczaj obejmuje uruchomienie zupełnie oddzielnej instancji systemu operacyjnego dla każdej maszyny wirtualnej. Takie lekkie, domyślne ograniczenia mogą kusić, by udostępniać więcej zasobów z serwera, takich jak systemy plików pozwalające na przechowywanie informacji o stanie. Powinieneś jednak mocno się zastanowić przed dalszym udostępnianiem kontenerowi zasobów z serwera, jeśli nie będą one używane wyłącznie przez ten kontener. O bezpieczeństwie kontenerów porozmawiamy później, ale generalnie powinieneś rozważać zastosowanie reguł SELinux lub AppArmor do zwiększenia ich izolacji, a nie likwidować istniejące bariery. Domyślnie wiele kontenerów korzysta z UID 0 do uruchamiania procesów. Ponieważ kontener jest zamknięty, wygląda to bezpiecznie, ale w rzeczywistości tak nie jest. Ponieważ wszystko działa na tym samym jądrze, wiele rodzajów zagrożeń bezpie- czeństwa lub najprostszy błąd w konfiguracji mogą dać użytkownikowi root konte- nera nieautoryzowany dostęp do zasobów systemowych, plików i procesów hosta. Aplikacje bezstanowe Przykładem aplikacji, które dobrze zamyka się w kontenery, są aplikacje sieciowe przechowujące swój stan w bazach danych. Mógłbyś też uruchomić coś w stylu instancji memcache w kontene- rach. Jeśli jednak przyjrzysz się dokładniej swojej aplikacji sieciowej, to dostrzeżesz, że ma ona prawdopodobnie lokalnie zapisane informacje o stanie, z których korzystasz — takie jak pliki konfiguracyjne. Może nie wydaje się to wiele, ale oznacza, że ograniczyłeś możliwość ponownego wykorzystania swojego kontenera i utrudniłeś jego wdrożenie w innym środowisku bez zadbania o utrzymanie poprawnych danych konfiguracyjnych w jego zasobach. 34 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nW wielu przypadkach proces zamykania aplikacji w kontenerze oznacza przeniesienie stanu kon- figuracji do zmiennych środowiska, które można przekazać do aplikacji z kontenera. Umożliwia to wykorzystanie tego samego kontenera zarówno w środowisku produkcyjnym, jak i demonstra- cyjnym. W wielu firmach takie środowiska będą potrzebowały wielu różnych ustawień konfigura- cyjnych, od nazw baz danych do nazw serwerów udostępniających inne powiązane usługi. Podczas korzystania z kontenerów możesz też zauważyć, że zawsze zmniejszasz rozmiar swojej aplikacji podczas zamykania jej w kontener, usuwając z niej wszystko, co nie jest niezbędne do działania. Zauważyliśmy, że zastanowienie się nad tym, co jest potrzebne do działania w archi- tekturze rozproszonej w postaci kontenera, może prowadzić do ciekawych decyzji projektowych. Jeśli na przykład masz usługę zbierającą dane, przetwarzającą je i zwracającą wynik, możesz skonfi- gurować kontenery na wielu serwerach do wykonywania tej pracy, a następnie łączyć wyniki ich działania w innym kontenerze. Przenoszenie informacji o stanie na zewnątrz Jeśli Docker najlepiej sprawdza się w przypadku aplikacji bezstanowych, to w jaki sposób najlepiej zapisywać stan, gdy jest to konieczne? Konfigurację najlepiej przekazywać na przykład przez zmienne środowiska. Docker obsługuje zmienne środowiska — są one przechowywane w meta- danych opisujących konfigurację kontenera. Oznacza to, że przy restartowaniu kontenera za każ- dym razem do aplikacji będzie przekazywana taka sama konfiguracja. To w bazach danych skalowalne aplikacje często przechowują informacje o stanie. Nic nie stoi na przeszkodzie, by w przypadku Dockera robić to samo w aplikacjach zamkniętych w kontenerze. W przypadku aplikacji, które muszą zapisywać pliki, trzeba jednak zmierzyć się z pewnymi wy- zwaniami. Zapis informacji w systemie plików kontenera nie będzie dobrze działać, ponieważ do- stępna będzie bardzo ograniczona przestrzeń i nie będzie zachowywany stan pomiędzy restartami kontenera. Przed umieszczeniem w kontenerze Dockera aplikacji, które muszą zapisywać stan systemu plików, należy się mocno zastanowić. Jeśli zdecydujesz, że skorzystanie z Dockera w ta- kich sytuacjach może przynieść korzyści, najlepiej zaprojektować rozwiązanie, w którym stan może być zapisywany w scentralizowanej lokalizacji dostępnej niezależnie od tego, na którym serwerze zostanie uruchomiony kontener. W pewnych przypadkach może to oznaczać usługi takie jak Amazon S3, RiakCS, OpenStack Swift, lokalne urządzenie blokowe czy nawet zamontowanie dysków iSCSI w kontenerze. Choć możliwe jest zapisanie stanu w podłączonym zewnętrznym systemie plików, jest to w zasadzie odradzane przez społeczność i powinno być traktowane jako za- awansowany przypadek użycia. Bardzo zaleca się rozpoczęcie pracy z aplikacjami, które nie muszą zapisywać informacji o stanie. Istnieje wiele powodów, dla których takie działanie jest generalnie odradzane — w prawie wszystkich przypadkach przyczyną jest to, że w ten sposób wprowadzane są zależności pomiędzy kontene- rem a hostem, które przeszkadzają w wykorzystaniu Dockera jako prawdziwie dy- namicznej, horyzontalnie skalowalnej usługi umożliwiającej dostarczanie aplikacji. Jeśli Twój kontener korzysta z podłączonego systemu plików, może być urucho- miony jedynie w systemie zawierającym ten system plików. Najlepsze zastosowania Dockera (cid:95) 35 Poleć książkęKup książkę\nSchemat pracy z Dockerem Tak jak w przypadku wielu innych narzędzi, podczas korzystania z Dockera bardzo mocno zaleca się stosowanie opracowanego dla niego schematu pracy. Jest to bardzo użyteczny schemat, dobrze odzwierciedlający sposób organizacji wielu firm, ale prawdopodobnie różni się on odrobinę od tego, co Ty lub Twój zespół stosujecie w tej chwili. Po przekształceniu sposobu pracy w naszej or- ganizacji do postaci stosowanej w Dockerze możemy z całą pewnością powiedzieć, że ta zmiana wpłynęła korzystnie na wiele zespołów w organizacji. Jeśli ten schemat pracy zostanie dobrze zaimplementowany, może rzeczywiście pomóc zrealizować obietnicę zredukowania zakresu nie- zbędnej komunikacji między zespołami. Wersjonowanie Pierwszą rzeczą, którą Docker domyślnie oferuje, jest mechanizm kontroli wersji w dwóch posta- ciach. Pierwszy mechanizm jest wykorzystywany do śledzenia warstw systemu plików, z których to warstw są zbudowane obrazy, a drugi to system znakowania tworzonych kontenerów. Warstwy systemu plików Kontenery Dockera składają się z ułożonych na stosie warstw systemu plików, z których każda jest identyfikowana za pomocą unikalnego ciągu znaków, przy czym każdy nowy zestaw zmian wprowadzany podczas tworzenia obrazu umieszczany jest nad wszystkimi poprzednimi zmiana- mi. Wspaniale się to sprawdza, ponieważ oznacza to, że gdy tworzysz nową kompilację, musisz przebudować jedynie te warstwy, w których zmiana jest wprowadzana, oraz te, które na nich się opierają. Oszczędza to czas i łącza sieciowe, ponieważ kontenery dostarczane są w postaci warstw i nie ma konieczności dostarczania tych warstw, które serwer już ma zapisane. Jeśli wykonywałeś już wdrożenia za pomocą innych narzędzi do wdrażania, to wiesz, że może się to skończyć wielo- krotnym przesyłaniem setek megabajtów tych samych danych na serwer przy każdym wdrożeniu. Działa to wolno, a co gorsza, nie możesz tak naprawdę być pewien, co zmieniło się pomiędzy ko- lejnymi wdrożeniami. Dzięki efektowi warstwowania oraz dzięki temu, że kontenery Dockera za- wierają wszystkie zależności aplikacji, możesz być praktycznie pewien, gdzie nastąpiła zmiana. Aby to trochę uprościć, musisz pamiętać, że obraz w Dockerze zawiera wszystko, co jest potrzeb- ne Twojej aplikacji. Jeśli zmienisz jeden wiersz kodu, na pewno nie będziesz chciał tracić czasu na przebudowywanie wszystkich bibliotek wykorzystywanych przez Twój kod, by utworzyć nowy obraz. Zamiast tego Docker wykorzysta tak wiele warstw, jak to możliwe, aby zostały przebudo- wane tylko warstwy, na które wpłynęła zmiana w kodzie. Znaczniki obrazów Druga postać kontroli wersji oferowana przez Dockera to ta, która ułatwia odpowiedź na ważne pytanie: jaka była poprzednia wersja wdrożonej aplikacji? Odpowiedź nie zawsze jest prosta. Istnieje wiele rozwiązań dla aplikacji niekorzystających z Dockera — od znaczników Gita dla każdej wer- sji, przez logi wdrożenia, po znakowanie kompilacji przeznaczonych do wdrożenia i wiele więcej. Jeśli na przykład koordynujesz wdrożenie za pomocą Capistrano, zajmie się ono tym za Ciebie, przechowując na serwerze zdefiniowaną liczbę wcześniejszych wersji i wykorzystując linki sym- boliczne, by uczynić jedną z nich wersją bieżącą. 36 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nJednak w każdym skalowalnym środowisku produkcyjnym każda aplikacja ma swój unikalny sposób przechowywania informacji o wersjach wdrażanego kodu. Może być też tak, że wiele apli- kacji działa podobnie, a jedna się wyróżnia. Gorzej, że w środowisku korzystającym z wielu języ- ków programowania wykorzystywane są przez aplikacje różne narzędzia do wdrażania, często mające ze sobą bardzo mało wspólnego. Zatem pytanie „jaka była poprzednia wersja?” może mieć wiele odpowiedzi w zależności od tego, kogo spytasz i jakiej aplikacji będzie dotyczyło pytanie. Docker ma do obsługi tego wbudowany mechanizm, który umożliwia znakowanie obrazów pod- czas wdrażania. Możesz pozostawić wiele wersji swojej aplikacji na serwerze i po prostu oznaczać je podczas udostępniania. Jak już wspomnieliśmy, nie jest to skomplikowane ani też trudne do znalezienia w innych narzędziach do wdrażania oprogramowania. Możesz wprowadzić oznaczanie wersji podczas udostępniania jako standard w swoich aplikacjach i wówczas wszyscy będą mogli oczekiwać tego, że oznaczenia będą stosowane w taki sam sposób. W wielu przykładach, jakie można znaleźć w internecie oraz w tej książce, zoba- czysz, że użytkownicy korzystają ze znacznika latest (najnowsze). Jest to znacznik przydatny na początek oraz podczas pisania przykładów, ponieważ w ten sposób zawsze wybieramy najnowszą wersję obrazu. Jest to jednak znacznik dynamiczny, więc nie jest dobrym pomysłem stosowanie go w większości praktycznych zasto- sowań, gdyż wykorzystywane biblioteki mogą zostać zaktualizowane niezależnie od Ciebie i nie będzie możliwe przywrócenie poprzedniej wersji, ponieważ znacznik latest nie będzie wskazywał już na tę samą wersję. Budowanie Budowanie aplikacji w wielu organizacjach jest czarną magią i tylko kilka osób wie, które dźwignie i gałki trzeba poruszyć, by uzyskać poprawny, możliwy do wdrożenia artefakt. Część kosztów związanych z wdrożeniem nowej aplikacji jest związana z poprawnym jej zbudowaniem. Docker nie rozwiązuje wszystkich problemów, ale dostarcza narzędzia z ustandaryzowaną konfiguracją oraz zestaw narzędzi do budowania. Bardzo ułatwia to użytkownikom nauczenie się poprawnego budowania Twojej aplikacji oraz uruchamiania utworzonego kodu. Narzędzie Dockera działające w trybie tekstowym zawiera parametr build, który pozwala na po- branie pliku Dockerfile i utworzenie obrazu Dockera. Każde polecenie w Dockerfile generuje nową warstwę w obrazie, dzięki czemu, po prostu zaglądając do samego pliku Dockerfile, można łatwo ustalić, jakie operacje będą wykonywane podczas budowania. Dobrą stroną całej tej standaryzacji jest to, że każdy inżynier, który pracował z Dockerfile, może tam zajrzeć i zmodyfikować proces bu- dowania każdej innej aplikacji. Ponieważ obraz Dockera jest artefaktem ustandaryzowanym, wszystkie narzędzia stosowane w procesie budowania będą takie same niezależnie od wykorzystanego na- rzędzia, dystrybucji systemu operacyjnego, w którym on działa, czy liczby niezbędnych warstw. Większość procesów budowania w Dockerze składa się z jednego polecenia docker build i gene- ruje pojedynczy artefakt, obraz kontenera. Ponieważ jest to zazwyczaj przypadek, w którym więk- szość logiki związanej z budowaniem jest w całości zamknięta w pliku Dockerfile, łatwo utworzyć standardowe zadania budowania dla wszystkich zespołów do wykorzystania w systemach budo- wania takich jak Jenkins (http://jenkins-ci.org/). Dla dokładniejszego ustandaryzowania procesu budowania kilka firm, w tym eBay, rzeczywiście przyjęło za standard kontenery Dockera, by bu- dować obrazy z pliku Dockerfile. Schemat pracy z Dockerem (cid:95) 37 Poleć książkęKup książkę\nTestowanie Choć sam Docker nie zawiera wbudowanego frameworka do testowania, to sposób, w jaki kon- tenery są budowane, daje kilka korzyści podczas testowania kodu zamkniętego w kontenerach Dockera. Testowanie aplikacji produkcyjnej może przyjmować wiele postaci: od testów jednostkowych do pełnych testów integracyjnych w środowisku zbliżonym do produkcyjnego. Docker ułatwia testowanie, zapewniając, że do produkcji zostaną dostarczone te same artefakty, które przeszły testowanie. Można to zagwarantować, ponieważ by upewnić się, że dostarczamy tę samą wersję aplikacji, możemy wykorzystać zarówno obliczoną przez Dockera sumę kontrolną SHA dla kon- tenera, jak i dodatkowy znacznik. Druga cecha istotna z punktu widzenia testowania jest taka, że wszystkie testy kontenera auto- matycznie obejmują testowanie aplikacji ze wszystkimi wykorzystywanymi przez nią biblioteka- mi, z którymi jest ona dostarczana. Jeśli framework do testów jednostkowych zwróci informację, że wszystkie testy obrazu kontenera się powiodły, możesz mieć pewność, że nie doświadczysz na przykład problemów z wersjami bibliotek podczas wdrażania. Nie jest to proste do osiągnięcia w przypadku innych technologii i przykładowo nawet testy plików WAR Javy nie obejmują testo- wania samego serwera aplikacji. Ta sama aplikacja Java wdrażana w kontenerze Dockera będzie też zawierała serwer aplikacji, dzięki czemu cały stos może zostać dokładnie przetestowany przed wdrożeniem produkcyjnym. Dodatkową korzyścią z dostarczania aplikacji w kontenerach Dockera jest to, że w miejscach, gdzie wiele aplikacji komunikuje się ze sobą zdalnie za pomocą czegoś w rodzaju API, programi- ści jednej aplikacji mogą w prosty sposób pracować z wersją innej usługi, która jest przygotowana dla środowiska potrzebnego im w danej chwili, na przykład produkcyjnego lub demonstracyjnego. Programiści w żadnym z zespołów nie muszą być ekspertami w dziedzinie budowy czy wdrażania innej usługi — po prostu skupiają się na tworzeniu swojej aplikacji. Jeśli zastosujesz to w przy- padku architektury SOA z niezliczoną ilością mikrousług, to kontenery Dockera mogą się okazać prawdziwym kołem ratunkowym dla programistów i inżynierów odpowiedzialnych za zapewnie- nie jakości, którzy muszą się przedzierać przez gąszcz wywołań API pomiędzy mikrousługami. Tworzenie pakietów Podstawowym zadaniem i głównym celem podczas korzystania z Dockera jest utworzenie poje- dynczego artefaktu przy każdym budowaniu kontenera. Nie ma znaczenia, w jakim języku jest napisana Twoja aplikacja ani w jakiej dystrybucji Linuksa będziesz ją uruchamiał — za każdym razem po zakończeniu budowania kontenera otrzymasz wielowarstwowy obraz Dockera. Wszyst- ko to jest budowane i obsługiwane za pomocą narzędzi Dockera. To właśnie z porównania do kontenera transportowego pochodzi nazwa Dockera: pojedynczej, łatwej do transportowania rze- czy, którą mogą obsługiwać uniwersalne narzędzia niezależnie od tego, co w sobie zawiera. Tak jak w przypadku portu kontenerowego czy innego punktu przeładunkowego, narzędzia Twojego Dockera będą miały styczność tylko z jednym rodzajem paczek: obrazami Dockera. Jest to ogromna zaleta, ponieważ bardzo ułatwia ponowne wykorzystanie narzędzi w pracy nad różnymi aplikacjami i oznacza, że gotowe narzędzia przygotowane przez innych będą obsługiwały zbudowane 38 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nprzez Ciebie obrazy. Aplikacje, których skonfigurowanie zazwyczaj wymaga dużo wysiłku pod- czas wdrażania na nowym komputerze lub w systemie programistycznym, stają się z Dockerem niewiarygodnie przenośne. Po zbudowaniu kontenera może on zostać łatwo wdrożony w dowol- nym systemie z uruchomionym serwerem Dockera. Wdrażanie Wdrożenia są obsługiwane przez tak wiele rodzajów narzędzi w wielu różnych zestawieniach, że nie byłoby możliwe wymienienie tutaj ich wszystkich. Niektóre z tych mechanizmów korzystają ze skryptów powłoki, programów takich jak Capistrano, Fabric, Ansible lub innych narzędzi utworzonych własnymi siłami. Z naszego doświadczenia zdobytego w organizacjach składających się z wielu zespołów wynika, że zazwyczaj jedna lub dwie osoby w każdym zespole znają magiczne zaklęcia pozwalające wykonać poprawne wdrożenie. Gdy coś pójdzie nie tak, cały zespół liczy na to, że przywrócą one poprawne działanie. Jak już prawdopodobnie się domyślasz, Docker usuwa większość tego typu problemów. Wbudowane narzędzia wspomagają proste, jednowierszowe strategie wdrażania pozwalające pobrać zbudowany obraz na docelowy komputer i go uruchomić. Standardowy klient Dockera obsługuje jedynie wdrożenia na pojedynczych komputerach, ale do- stępne są też inne narzędzia, które ułatwiają wdrażanie na klastrach komputerów z Dockerem. Dzięki standaryzacji wprowadzanej przez Dockera zbudowany przez Ciebie obraz może być wdrożony w dowolnym systemie przy niewielkim stopniu złożoności z punktu widzenia zespo- łów programistycznych. Ekosystem Dockera Wokół Dockera tworzy się duża społeczność, której siłą napędową są programiści i administrato- rzy systemów. Tak jak w przypadku ruchu DevOps, spowodowało to powstanie lepszych narzędzi dzięki dostosowaniu kodu do problemów występujących podczas utrzymywania i konserwacji aplikacji. W obszary, gdzie narzędzia dostarczane przez Dockera mają luki, wkroczyły inne firmy i indywidualni programiści. Wiele z tych narzędzi również udostępniono na otwartych licencjach. Oznacza to, że każda firma może je rozszerzać i modyfikować, by dostosować je do swoich potrzeb. Docker to komercyjna firma, która wspaniałomyślnie przekazała społeczności open source większość kodów źródłowych rdzenia Dockera. Firmy są gorąco zachęcane do tego, by dołączyć do społeczności i wspomagać wynikami swojej pracy zasoby open source. Jeśli szukasz wspieranych wersji podstawowych narzędzi Dockera, to powinieneś wiedzieć, że więcej informacji na temat ich oferty możesz znaleźć na stronie https://www.docker.com/support. Koordynacja Pierwszą ważną kategorią narzędzi rozszerzających podstawowe funkcje Dockera są programy do ko- ordynacji i przeprowadzania masowych wdrożeń, takie jak Swarm (https://github.com/docker/swarm/), Centurion firmy New Relic (https://github.com/newrelic/centurion/) czy Helios firmy Spotify (https://github.com/spotify/helios). We wszystkich nich stosowane jest dość proste podejście do tematu koordynacji. W przypadku środowisk bardziej złożonych lepszym rozwiązaniem są Schemat pracy z Dockerem (cid:95) 39 Poleć książkęKup książkę\nKubernetes firmy Google (https://github.com/GoogleCloudPlatform/kubernetes) i Apache Mesos (http://mesos.apache.org/). Wraz z odkrywaniem kolejnych luk i publikowaniem ulepszeń przez nowych użytkowników stale pojawiają się nowe narzędzia. Niepodzielne maszyny Dodatkową koncepcję, którą można wykorzystać do poprawienia komfortu korzystania z Dockera, stanowią niepodzielne maszyny (ang. atomic hosts). Standardowo serwery i maszyny wirtualne są systemami, które organizacja starannie kompletuje, konfiguruje i utrzymuje, aby dostarczały wielu funkcji, które można wykorzystać w różnorodny sposób. Aktualizacje muszą być często przepro- wadzane w wielu krokach i na wiele sposobów konfiguracja może utracić spójność oraz dopro- wadzić do nieoczekiwanego zachowania systemu. Większość działających w dzisiejszym świecie systemów łata się i aktualizuje w czasie rzeczywistym. W odróżnieniu od tego w świecie zorien- towanym na wdrożenia większość osób wdraża pełną, spójną wersję swojej aplikacji, zamiast pró- bować dokładać łaty do działającego systemu. Jedną z zachęcających cech kontenerów jest to, że pomagają one uczynić aplikacje jeszcze bardziej spójnymi, niż ma to miejsce w przypadku modeli tradycyjnych wdrożeń. Co by było, gdybyś mógł rozszerzyć ten podstawowy wzorzec kontenerów na cały system opera- cyjny? Zamiast polegać na zarządzaniu konfiguracją i próbować aktualizować, łatać komponenty Twojego systemu operacyjnego i go modyfikować, mógłbyś po prostu wyciągnąć nowy, spójny obraz systemu operacyjnego i zrestartować serwer? A gdy coś się zepsuje, mógłbyś łatwo wrócić do tego samego obrazu, jaki wykorzystywałeś poprzednio? Jest to jedna z podstawowych koncepcji stojących za opartymi na Linuksie dystrybucjami do ob- sługi pojedynczych komputerów, takimi jak CoreOS (https://coreos.com/) oraz Project Atomic (http://www.projectatomic.io/). Nie tylko możesz łatwo usuwać i ponownie wdrażać swoje aplikacje, ale tę samą filozofię możesz zastosować do całego stosu oprogramowania. Ten wzorzec pomaga wprowadzić spójność na niesamowitym poziomie i elastyczność całego stosu. Typowe cechy niepodzielnych maszyn (https://gist.github.com/jzb/0f336c6f23a0ba145b0a) to mi- nimalna wielkość, architektura ukierunkowana na obsługę kontenerów i Dockera oraz możliwość przeprowadzania aktualizacji i ich wycofywania w taki sposób, by było je łatwo kontrolować za pomocą narzędzi do koordynacji wielu maszyn działających zarówno na sprzęcie fizycznym, jak i na popularnych platformach do wirtualizacji. W rozdziale 3. omówimy, w jaki sposób możesz łatwo wykorzystać niepodzielne maszyny w swoim procesie wytwarzania oprogramowania. Jeśli korzystasz z niepodzielnych maszyn, przeprowa- dzając wdrożenia, to dzięki temu możesz uzyskać niespotykaną wcześniej spójność stosu opro- gramowania w środowiskach programistycznych i produkcyjnych. Dodatkowe narzędzia Pozostałe kategorie obejmują narzędzia do audytu, logowania, zarządzania siecią, mapowania i wiele innych, z których większość korzysta bezpośrednio z API Dockera. Wśród takich narzędzi i mechanizmów powiązanych z Dockerem można wymienić Flannel dla Kubernetesa z CoreOS, 40 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nWeave, wirutalną sieć pozwalającą porozmieszczać kontenery na wielu maszynach z Dockerem oraz bezpośrednie wsparcie dla logów Dockera w ruterze logów Heka Mozilli (https://github.com/ mozilla-services/heka). Nikt się nie spodziewał tak dużej społeczności dynamicznie rozwijającej się wokół Dockera, ale bardzo prawdopodobne, że takie wsparcie jedynie przyspiesza rozwój zastosowań Dockera i two- rzenie solidnych narzędzi rozwiązujących wiele problemów pojawiających się w społeczności. Podsumowanie W ten sposób skończyliśmy szybkie omówienie Dockera. Wrócimy do tej rozmowy później, by odrobinę dokładniej przyjrzeć się architekturze Dockera, podać więcej przykładów zastosowania narzędzi tworzonych przez społeczność oraz głębiej zanurzyć się w rozważania niezbędne do projektowania solidnych platform kontenerowych. Na razie jednak prawdopodobnie masz wielką ochotę, by tego wszystkiego spróbować, dlatego więc w kolejnym rozdziale zajmiemy się instalacją i uruchomieniem Dockera. Podsumowanie (cid:95) 41 Poleć książkęKup książkę\n42 (cid:95) Rozdział 2. Rzut oka na Dockera Poleć książkęKup książkę\nSkorowidz devicemapper, 164 DNS, 84 Docker, 19, 99 Machine, 50 Swarm, 140 dokument The Reactive Manifesto, 194 The Twelve-Factor App, 194 dostarczanie obrazów, 77 dyspozycyjność, 192 E EC2 Container Service, 148 ekosystem, 39 elastyczność, 194 F Fedora Linux 21, 46 framework do wdrażania, 23 G H gniazdka sieciowe, 29 grupy kontrolne, 166 GUI, 47 historia kontenerów, 80 obrazów, 136 hostname, 83 A adres MAC, 84 aktualizacja obrazów, 101 Amazon EC2 Container Service, 148 API, Application Programming Interface, 30 aplikacje bezstanowe, 34 architektura, 28 AUFS, 164 automatyczne restartowanie kontenera, 93 autoryzacja w rejestrze, 71 AWS CLI, 149 badanie powłoki, 107 bezpieczeństwo, 173 Boot2Docker, 53 BTRFS, 164 budowanie, 37, 190 obrazu, 64 B C chmura, 23 CLI, Command Line Interface, 149 czyszczenie obrazów, 96 D debugowanie kontenerów, 129 definicja zadania, 153 demon Dockera, 75, 178 upstart, 49 201 Poleć książkęKup książkę\nI IAM, Identity and Access Management, 148 informacje o kontenerze, 102 o serwerze, 100 o stanie, 35 instalacja, 43–59 z Homebrew, 47 instalator z GUI, 47 klienta Netcat, 157 klienta Telnet, 157 instancje kontenerów, 150 izolacja, 34 izolowanie zależności, 186 jawne deklarowanie, 186 J K klient, 43, 44 Netcat, 157 Telnet, 157 konfiguracja demona Dockera, 75 IAM, 148 kontenera, 82 kontenery, 31, 44, 79 adres MAC, 84 automatyczne restartowanie, 93 bezpieczeństwo, 173 czyszczenie, 96 debugowanie, 129 dodatkowe uprawnienia, 175 konfiguracja, 82 pauzowanie, 96 pobieranie informacji, 102 produkcyjne, 121 projektowanie platformy produkcyjnej, 185 przeglądanie, 136 testowanie, 125 tworzenie, 81 uruchamianie, 92 wnętrze, 103 wymuszanie zakończenia pracy, 95 wznawianie pracy, 96 zatrzymywanie, 94 202 (cid:95) Skorowidz konto w Docker Hub, 72 kontrolowanie procesów, 134 koordynacja, 39, 123 kopia rejestru, 74, 76 L Linux, 45 logi, 109, 193 logowanie do rejestru, 72 Ł łączenie z kontenerem, 158 M Mac OS X 10.10, 47 magazyny danych, 85, 163 maszyny niepodzielne, 40 wirtualne, 33, 50 mechanizm devicemapper, 164 mechanizmy wymienne, 161 menedżer Swarm, 142 Microsoft Windows 8, 48 minimalizowanie liczby obiektów, 198 model klient-serwer, 28 monitorowanie Dockera, 112 N narzędzia, 122 do koordynacji, 123 do planowania przetwarzania rozproszonego, 123 dodatkowe, 40 rozbudowane, 29 nazwa kontenera, 82 niepodzielna maszyna, 44 niezmienność infrastruktury, 33 O obiekty do wdrożenia, 198 obrazy, 36, 44, 61 bazowe, 69 budowanie, 64 historia, 136 Poleć książkęKup książkę\npobieranie aktualizacji, 101 uruchamianie, 68 zapisywanie, 70 obsługa komunikatów, 195 ograniczenia zasobów, 87 optymalizacja przechowywania danych, 199 przesyłania danych, 199 overlayfs, 165 P pakiet util-linux, 104 pakiety, 38 pamięć, 90 para klucz-wartość, 82 pauzowanie pracy kontenera, 96 platformy do wirtualizacji, 23 plik .dockerignore, 65 Dockerfile, 61 index.js, 69 pobieranie aktualizacji obrazów, 101 polecenie bind mount, 83 docker exec, 103 docker kill, 95 docker top, 129 systemd, 49 ulimit, 91 porty sieciowe, 29, 191 powłoka, 107 proces wdrożenia, 27 procesor, 87 procesy, 21, 129, 190 administracyjne, 193 generowane dane, 129 kontrolowanie, 134 przeglądanie, 133 program Boot2Docker, 53 cAdvisor, 117 Centurion, 144 CMD, 157 docker events, 115 nsenter, 104 Vagrant, 55 projekt LXC, 162 projektowanie produkcyjnej platformy, 185 przechowywanie kopii rejestru, 76 przeglądanie kontenera, 136 procesów, 133 przestrzeni nazw, 171 sieci, 135 systemu plików, 138 przenoszenie informacji, 35 przepływ pracy, 198 przestrzenie nazw AppArmor, 177 IPC, 170 jądra, 169 montowania, 170 PID, 170 SELinux, 177 sieciowe, 171 UTS, 170 użytkownika, 169, 171 przesyłanie danych, 199 przetwarzanie rozproszone, 123 przypinanie procesora, 89 publiczne rejestry, 70 rejestr obrazów, 70 rejestry prywatne, 71 repozytorium, 73 kodów, 186 responsywność, 194 R S SaaS, Software-as-a-Service, 186 schemat pracy, 36 serwer, 43, 48 serwery na maszynach wirtualnych, 50 sieć, 180 w kontenerze, 31 skalowanie, 139 stabilność, 194 standardowe wyjście błędów stderr, 109 statystyki kontenerów, 112 sterowniki magazynów danych, 165 uruchamiania, 161 vfs, 165 stosowanie procesów, 21 Skorowidz (cid:95) 203 Poleć książkęKup książkę\nV Vagrant, 55 vfs, 165 W warstwy systemu plików, 36 wdrażanie, 39, 121 wersje Dockera, 99 wersjonowanie, 36 wirtualizacja, 23 własne obrazy bazowe, 69 wsparcie, 27 współbieżność, 191 wykorzystanie portów, 191 wyświetlanie wersji, 99 wznawianie pracy kontenera, 96 Z zadania, 153 zależności, 186 zapisywanie konfiguracji, 188 obrazów, 70 zarządzanie klastrem, 142 konfiguracją, 23 obciążeniem, 24 zastosowania Dockera, 32 zatrzymywanie kontenera, 94 zadania, 158 zewnętrzne zależności, 128 zmienna $WHO, 69 zmienne środowiska, 69 znaczniki obrazów, 36 zwracanie wyniku, 107 strumienie zdarzeń, 193 system init.d, 49 system plików, 36, 138 /sys, 167 btrfs, 164 overlayfs, 165 szybki przegląd, 125 Ś środowisko produkcyjne, 185, 192 programistyczne, 24, 192 T tekstowy klient Dockera, 30 testowanie, 38, 58 kontenerów, 125 lokalnej kopii re\n<a href="http://cyfroteka.pl/ebooki/Docker__Praktyczne_zastosowania-ebookRO/p0013935i001" target="_blank" title="Docker. Praktyczne zastosowania [Karl Matthias, Sean P. Kane] - KLIKAJ I CZYTAJ ONLINE" > <img src="http://cyfroteka.pl/images/BRD.png" style="border:none;background:none transparent;box-shadow:none;-webkit-box-shadow:none;-webkit-border-radius:0;border-radius:0;" alt="Docker. Praktyczne zastosowania [Karl Matthias, Sean P. Kane] - KLIKAJ I CZYTAJ ONLINE"/></a>


lifeindots.pl: Lovely October, czyli podsumowanie października\nponiedziałek, 18 listopada 2013 | 25 komentarzy |\nCo najlepiej wspominam a październiku? Chyba powrót na studia i do Instytutu Francuskiego. Zatęskniłam za dużą ilością obowiązków :)\nWśród moich ulubieńców królowały w październiku kosmetyki Catrice. Komplet All Matt Plus, czyli podkład 010 Light Beige i puder 015 Natural Beige świetnie sprawdzały się na mojej histerycznej ostatnio buzi. Na większe niespodzianki, a czasami nawet pod oczy nakładałam świetnie kryjący i bardzo kremowy Camuflage w odcieniu 010 Ivory. Na policzkach już od ponad 1,5 miesiąca króluje róż ze starszej limitki Revoltaire od Catrice w odcieniu Colour Bomb. Na oczach prym wiodła przepiękna paletka Vintage Romance ze Sleek'a. Na dłoniach zaczęły się pojawiać typowo jesienne kolory, w tym ulubiony Miss Fancy Pants od Essie. Idealny szary brąz. Po rozczarowaniu Good To Go i Seche Vite zdecydowałam, że wypróbuje tańszy top. Padło na nowość od Catrice, czyli Gel Like Top Coat, który póki co świetnie się sprawuje. Do ulubieńców trafia też żel antybakteryjny z Bath&Body Works, który uwiódł mnie swoim intensywnym jesiennym zapachem.\nZdjęcia brak, niestety, ale w tym miesiącu największe pretensje miałam do Seche Vite i Good To Go. Za drogie są to produkty, aby aż tak zawodziły. Ściąganie lakieru, gęstnienie - to tylko dwa z dłuższej listy ich wad.\nW październiku w łapki wpadła mi oczywiście nowa paletka Sleek Vintage Romance (zajrzyjcie tu i tu). Po długich poszukiwaniach, w końcu udało mi się znaleźć korektor Catrice w najjaśniejszym odcieniu w jednej z drogerii internetowych i długo nie zastanawiałam się nad zakupem. A żeby nie było mu samotnie w paczce, do koszyka dorzuciłam sławne duo z Flormaru w odcieniu P115. Na początku miesiąca odwiedziłam też drogerię Natura, gdzie w ręce szybko wpadła mi następna pomadka Essence LonglastingLipstick, a następnie pędzel kabuki z tej samej firmy i puder All Matt Plus z Catrice. Zaliczyłam też Bath&Body Works, gdzie weszłam tylko po żel antybakteryjny. Wybrałam zapach Autumn Day i jestem bardzo zadowolona. To jeden z lepszych żeli tego typu, jakie miałam. Myślę, że następnym razem skuszę się na zestaw 6 w cenie 4.\nO tej książce przeczytałam na blogu którejś z kosmetycznych blogerek i zainteresowałam się nią do tego stopnia, że szybko znalazłam egzemplarz do przeczytania, który pochłonęłam praktycznie w dwa dni. Dziewczyna z sąsiedztwa Jack'a Ketchuma to książka pozornie łatwa i prosta. Leniwe, niewielkie miasteczko lat 50. okazało się jednak tłem do drastycznych wydarzeń. Kilkoro dzieciaków znęca się nad 14-letnią koleżanką i jej niepełnosprawną siostrą. A wszystko pod przyzwoleniem matki kilku chłopców. I nawet narrator - David, który wydaje się być postacią tragiczną, nie poprawia samopoczucia czytelnika.\nW chmurach oczarował mnie nie tylko tytuł i odtwórca głównej roli. To film o dramacie jednostki wybitnej. Jednostki uwielbianej w swoim fachu, doskonałym pracowniku od brudnej roboty, jaką jest redukcja etatów. Do czasu, gdy okazuje się, że firma zdecydowała się na maksymalizację zysków i minimalizację wydatków przez wprowadzenie systemu elektronicznego. "Zwalanie przez Skype'a" ma zastąpić wypracowany przez lata system podróżowania i zwalniania. Tysiące miast, tysiące mil i jeden człowiek, który chce uratować to, w co wierzy.\nGrawitacja to film absolutnie doskonały w każdym calu. Perfekcyjny. Dopracowany. I wielopłaszczyznowy. Po pierwsze mamy przepiękne, zapierające dech w piersiach panoramy kosmicznego absolutu i technicznie dopracowane klaustrofobiczne wnętrza stacji kosmicznych. Po drugie kosmiczne katastrofy na tle majestatycznej muzyki, które tylko potęgują poczucie bezradności i trzymają w napięciu od pierwszych minut filmu. Po trzecie - duet Sandra Bullock i George Clooney - główki od szpilek szukające sensu życia i tworzące własną wielką historię.\nNowy przepis na ciasto do pizzy. Polecam. Znajdziecie go tutaj.\nPalcem po mapie Warszawy. "Południk zero" to świetne miejsce na spotkanie z przyjaciółmi, zarówno tymi muzykalnymi, jak i tymi bez słuchu. Nie zapomnijcie spróbować ich tostów - są świetne :)\n10. Październikowe osiągnięcie\nTo smutne, ale nie mam się czym pochwalić. Za mało czasu dla siebie.\nFabryczna poniedziałek, 18 listopada, 2013\nMuszę przyjrzeć się tym kamuflażom z Catrice. :)\nKasia (lifeindots.pl) poniedziałek, 18 listopada, 2013\nAsialova poniedziałek, 18 listopada, 2013\nmacałam ten kamuflaż w DM ale za ciemne mi się wydawały. a duo z flormaru gdzie mozna kupić online?\nJa kupowałam oba na www.ladymakeup.pl/sklep :)\nDla mnie był idealny jak byłam troszkę opalona, teraz powróciłam do swojej standardowej bladości, ale kamuflaż dalej ładnie stapia się ze skórą :)\nTak bardzo chcę wypróbować ten żel antybakteryjny, niestety mam możliwości kupna ;( Świetne podsumowanie. ;)\npirelka poniedziałek, 18 listopada, 2013\nFajne nowe nabytki ;)\nCo do filmu Grawitacja to chciałam iść ale u mnie już nie grają, tak żałuję bo czekałam na film w 3D ze świetnymi efektami.\nFilm był naprawdę rewelacyjny :) Myślę jednak, że w wersji 2D będzie równie doskonały, więc tylko czekać aż pojawi się na DVD :)\nklamarta. poniedziałek, 18 listopada, 2013\nJak sprawuje się ten podkład w kwestii matowienia? Jakie wykończenie daje i ile się trzyma? Poszukuję zastępcy Revlon CC dla tłustej i mieszanej i zastanawiam się, czy ten da radę.\n"Unconditionally" też uwielbiam w ostatnich dniach. Nie szczególnie podobały mi się piosenki Katy, które serwowała od pewnego czasu, natomiast ta jest fantastyczna.:)\nAll Matt Plus i Colorstay to są absolutnie różne typy podkładów. AMP jest lekki, średnio kryjący i matujący do 4-5 godzin. Jeżeli chcesz zastępcę dla Colorstay to polecam Flower Perfection od Borujois, pisałam o nim na blogu (poszukaj w zakładce "Bourjois") :)\nMi podoba się różnorodność w kompozycjach serwowanych przez Katy ;)\nPaulina poniedziałek, 18 listopada, 2013\nOd tygodnia posiadam ten podkład z Catrice i jestem zachwycona! :)\nJa też polubiłam go od pierwszego użycia :)\nPiękna jest ta paletka! Oj to też moje muzyczne uzależnienie! :)\nTreepsy wtorek, 19 listopada, 2013\nPodpisuję się pod powrotem na studia i Grawitacją! ;)\nUnknown wtorek, 19 listopada, 2013\nKusi mnie vintage romance :)\nbefore september wtorek, 19 listopada, 2013\nmiałam kiedyś top coat z catrice i chyba po przygodzie z SH Insta Dri (który sprawdził się dobrze), wrócę właśnie do niego:)\nKasia (lifeindots.pl) wtorek, 19 listopada, 2013\nJa jeszcze nie miałam Insta Dri, ale prawdopodobnie kupię jak skończy mi się top Catrice, bo jestem bardzo ciekawa jak się sprawdzi :)\nwizaz21 wtorek, 19 listopada, 2013\nz ciasta na pizze skorzystam i podpisuje sie pod 10 i mysle ze listopad tez sie nie bedzie roznil od pazdziernika ;/\nKamila wtorek, 19 listopada, 2013\nWidziałam także Grawitację - również zrobił na mnie wrażenie tym bardziej,że oglądałam go w 3D.\nKasia (lifeindots.pl) środa, 20 listopada, 2013\nNa mnie też, aż dziwię się, że poszłam na ten film trochę z przymusu, bo pomysł na seans należał do mojego narzeczonego :)\nAnonimowy wtorek, 19 listopada, 2013\nPolcam cover unconditionally Katy Perry, który zaśpiewała Beth, jet świetny! http://www.youtube.com/watch?v=3UPCd9UkcDY\nA co tam polecam odsłuchać wszystkich jej piosenek! :)\naGwer wtorek, 19 listopada, 2013\nW chmurach mnie zaciekawił, na pewno go obejrzę. Co do Grawitacji to miałam iść na nią do kina, ale jakoś wiele osób mi odradzało i w końcu sobie odpuściłam. Jak będzie dobra wersja w necie na pewno obejrzę ;)\nJa uważam, że "Grawitacja" naprawdę jest warta obejrzenia :) Tak samo jak "W chmurach". Oba filmy są naprawdę rewelacyjne :)\nMoń środa, 20 listopada, 2013\nSuper podsumowanie, książka mnie zaciekawiłą!\nDziękuję ;) Książkę bardzo polecam, ale trzeba się przygotować na dużo emocji, szczególnie tych negatywnych...\nAnonimowy czwartek, 21 listopada, 2013


Tuczniki droższe, ale tylko na południu Europy / Trzoda chlewna, ceny, opłacalna hodowla trzody chlewnej, świń, prosiąt / Agropolska\nTuczniki droższe, ale tylko na południu Europy\n23-02-2017,16:00\tAktualizacja: 23-02-2017,14:25\nCeny tuczników we Francji i Hiszpanii rosną od początku tego roku. Jak informują analitycy Krajowego Związku Pracodawców Producentów Trzody Chlewnej nie inaczej było w ostatnim tygodniu. Wszystko przez wzmożony popyt na wieprzowinę.\nCeny tuczników we Francji i Hiszpanii rosną od początku tego roku. Foto_Mirosław Lewandowski\nTuczniki we Francji i Hiszpanii od początku roku drożeją. W pierwszym przypadku według notowań z 23 lutego cena za kilogram tuszy o mięsności 56 proc. wyniosła 1,39 euro tj. ok. 5,97 z/kg. Z kolei w Hiszpanii 16 lutego zakłady płaciły 1,18 euro za kg żywca czyli ok. 5,07 zł.\nCeny tuczników w Hiszpanii, jak informują analitycy Krajowego Związku Pracodawców Producentów Trzody Chlewnej, przekroczyły poziom z 2015 i 2016 i zbliżają się do rekordowych z 2014 r., kiedy za kg żywca zakłady mięsne płaciły tam 1,20 euro.\nAfrykański pomór świń jest w Polsce pod kontrolą, ale niestety mimo to choroba wciąż powoli się szerzy. Dzieje się tak dlatego, że nie ma fizycznej możliwości wybicia wszystkich dzików, nie ma także szczepionki. Jednak najczęstszym...\nHiszpanie lokują swoją wieprzowinę głównie na rynku unijnym, 63 proc. z 1.490.000 ton, choć coraz więcej eksportują do Chin. Wkrótce ma także ruszyć wywóz hiszpańskiej wieprzowiny do Indii. To dobra informacja dla polskich producentów, ponieważ nasz kraj ze względu na ASF nie może sprzedawać tego mięsa poza Wspólnotę.\nCena tuczników w Niemczech, czyli kraju który dyktuje warunki w Europie, kolejny tydzień została niemieniona i wyniosła 1,52 euro za kg tuszy wbc. KZP-PTCH informuje, że Chiny cofnęły certyfikaty eksportowe dwóch dużych niemieckich zakładów. Póki co jednak sytuacja ta nie wpłynęła negatywnie na unijny rynek.\nProducenci tuczników w Polsce póki co doczekali się stabilizacji. W notowaniach ministerstwa rolnictwa cena między 7 i 6 tygodniem 2017 r. zmalała o pięć groszy. Z kolei w transakcjach członków KZP-PTCH cena tuczników w 8 tygodniu wyniosła 4,96 zł/kg (wż) i była o blisko 2 grosze niższa niż tydzień wcześniej.\ntuczniki ceny tuczników trzoda chlewna żywiec wieprzowy eksport wieprzowiny kzp-ptch


Oceny wodnoprawne i analizy oddziaływania na cele środowiskowe\nWeryfikacja zgodności przedsięwzięcia z celami środowiskowymi w zakresie ochrony wód (wynikających głównie z Planów Gospodarowania Wodami i Ramowej Dyrektywy Wodnej odbywa się na podstawie ekspertyz wymagających fachowej wiedzy.\nOd 1 stycznia 2018 r. w polskim systemie prawnym funkcjonuje nowy rodzaj decyzji administracyjnych - oceny wodnoprawne. Wydanie oceny wodnoprawnej musi być poprzedzone przeprowadzeniem analizy oddziaływania na cele środowiskowe w zakresie ochrony wód (zgodnie z ustawą Prawo wodne). Analizy tego typu są również wykonywane dla potrzeb raportu o oddziaływaniu przedsięwzięcia na środowisko, karty informacyjnej przedsięwzięcia lub operatu wodnoprawnego. Podobna analiza jest również niezbędna w celu uzyskania deklaracji organu odpowiedzialnego za gospodarkę wodną; dokument ten w wielu przypadkach jest obligatoryjnym załącznikiem do wniosku o dofinansowanie ze środków finansowych Unii Europejskiej. Podobne analizy wykonuje się także w ramach oceny wystąpienia szkody w środowisku wodnym lub w ramach badania przesłanek wystąpienia przestępstwa przeciw środowisku.\nDla potrzeb sporządzenia rzetelnej ekspertyzy zgodności z RDW niezbędne jest dokonanie oceny wpływu przedsięwzięcia na biologiczne, hydromorfologiczne i fizykochemiczne elementy stanu wód, z uwzględnieniem obszarów podlegających prawnej ochronie. Wymaga to przeprowadzenia specjalistycznych badań, ocen i analiz.\nFirma ZIELONE OKO posiada odpowiednie kwalifikacje do sporządzania ocen wodnoprawnych oraz analiz oddziaływania przedsięwzięć na stan wód. Wykonujemy takie dokumenty zarówno jako indywidualne ekspertyzy , jak i w formie specjalistycznych opinii dla potrzeb opracowywania raportów OOŚ i operatów wodnoprawnych. Każdorazowo przeprowadzamy taką analizę w ramach opracowywanych przez nas raportów OOŚ.\nWykonujemy badania fizykochemiczne, hydromorfologiczne (RHS i ocena równowagi hydrodynamicznej) oraz hydrobiologiczne (makrobentos, ichtiofauna, makrofity, fitobentos), zapewniając przy tym zgodność z obowiązującymi standardami, normami i przepisami.\nWykonaliśmy ok. 50 ekspertyz zgodności z celami środowiskowymi w zakresie ochrony wód, które zostały zaakceptowane przez organy administracji. W skład naszego zespołu wchodzą autorzy wytycznych na temat praktycznego stosowania przepisów Ramowej Dyrektywy Wodnej.\nOrganizujemy również szkolenia z dziedziny ocen wodnoprawnych i analiz oddziaływania na cele środowiskowe w zakresie ochrony wód.


cezarem - Co to jest cezarem? + Definicje online + eDefinicje.pl\nCo to jest cezarem?\nCzym jest cezarem? Co znaczy cezarem?\nWyraz cezarem jest odmianą słowa Cezar.\nZobacz synonimy słowa cezarem\nZobacz podział na sylaby słowa cezarem\nZobacz hasła krzyżówkowe do słowa cezarem\nZobacz anagramy i słowa z liter cezarem\nTłumaczenie wyrazu cezarem:\nZapis słowa cezarem w języku migowym\nZapis słowa cezarem w alfabecie Morse'a\nZapis słowa cezarem w alfabecie Braille'a\nZapis słowa cezarem w alfabecie fonetycznym NATO (ICAO)\nCharlie Echo Zulu Alpha Romeo Echo Mike\nZapis słowa cezarem od tyłu\nPopularność wyrazu cezarem\ncinemascope , cyk , czerniechowski , czytelniczka , czterosylabowiec , ciułactwo , Czechel , chlorator , Cedro-Mazur , Cieszanowo , chocianowianin , chodzieżanka , ckm , chronomierz , Czerniki , Czeluśnica , Chrząchówek , cotangensoida , cardigan , chlorowcopochodny ,


Powiatowe Igrzyska Dzieci w szachach drużynowych w Szkole Podstawowej w Luszowicach - Dąbrowa Tarnowska - Miasto i Powiat - informatordabrowski.pl\nStrona główna » Najnowsze informacje » Powiatowe Igrzyska Dzieci w szachach drużynowych w Szkole Podstawowej w Luszowicach\nW dniu 14 listopada 2018 roku w Szkole Podstawowej w Luszowicach odbyły się Powiatowe Igrzyska Dzieci w szachach drużynowych. Do rozgrywek swoje drużyny zgłosiły następujące szkoły: Szkoła Podstawowa w Luszowicach (2 drużyny), Szkoła Podstawowa nr 2 w Dąbrowie Tarnowskiej (2 drużyny), Szkoła Podstawowa w Radgoszczy i Szkoła Podstawowa w Pilczy Żelichowskiej. Drużyny grały systemem kołowym. Turniej sędziował Piotr Rychliński.\nmiejsce: Szkoła Podstawowa w Luszowicach (drużyna nr 1) – 9 pkt.\nmiejsce: Szkoła Podstawowa nr 2 w Dąbrowie Tarnowskiej – 6 pkt.\nmiejsce: Szkoła Podstawowa w Luszowicach (drużyna nr 2) – 4 pkt.\nmiejsce: Szkoła Podstawowa w Pilczy Żelichowskiej – 4 pkt.\nmiejsce: Szkoła Podstawowa w SP Radgoszczy – 2 pkt.\nPoprzedni: Dąbrowscy policjanci szkolą rodziców i nauczycieli\nNastępny Podsumowanie Dąbrowskiej Dębowej Jesieni 2018


Cyhoeddiad W przeszłym sezonie jeszcze tanie noclegi Radom\nW przeszłym sezonie jeszcze tanie noclegi Radom\nW bieżącym periodzie coraz ciekawsze spowalniają się mieszkania zaopatrzone w minimalistycznym tonu. Konkretyzują się one użyciem przyciasnej wartości niuansów, wesele Radom co skupuje, iż umieszczenia wkładają się nieledwie aseptyczne. W epizodzie takich siedlisk notorycznie, opuszczoną z odosobnionych ozdobie, przesiaduje się szklana tafla spłacona feerycznym nadrukiem. Gobelin współczesnego fasonu występuje się ogromnie pierwotnie i wyznaczy motel Radom do świeżych meritów.\nCyswllt: Małgorzata, Jastrzębie-Zdrój, tel. 7941553551, email: nmałgorzataz1383@interia.pl\nustawienie anteny Gliwiceustawienie anteny Gliwiceokna pcv cenyBiżuteria srebrna dla każdej kobietyZatrudnimy inspektora dla BAHUS Sp. z o.o.ustawienie anteny GliwiceMonitoring - instalacja taniapożyczki bez zaświadczeń o dochodachmontaż anten GliwiceDoradztwo personalne it - najlepsi na rynku


Kosmetyki dla facetów - Wizaz.pl\n2010-04-15, 13:59 #1\nPosiadam spore blizny po trądziku i chciałbym zapytać czy istnieje jakiś środek dla mężczyzn by je zatuszować.\nWyślij prywatną wiadomość do tomekjak\nZnajdź więcej postów tomekjak\n2010-04-15, 15:20 #2\nDot.: Kosmetyki dla facetów\nzatuszować ciężko będzie. Idź do kosmetyczki na mikro dermabrazje (nie wiem czy dobrze napisałam?). Kilka razy i myślę że widoczność blizn się zmniejszy\n2010-04-15, 22:14 #3\nSama mam taki problem i ciężko to skutecznie zatuszować, mikrodermabrazja to najlepszy sposób, tylko że to dobrych kilka zabiegów, ale efekty są nie do przecenienia.\n2010-04-16, 20:16 #4\nA ja mikrodermabrazji nie polecam. Mialam serie 15 zabiegow jakies 4 lata temu i moge powiedziec, ze to strata pieniedzy. Jeden zabieg kosztowal wtedy 150zl (moze teraz kosztuje wiecej, nie wiem), ale poza swietnym wygladzeniem cery i swoistym peelingiem, efektu wielkiego nie bylo. Jesli masz naprawde male blizny to moze ci pomoze, ale jesli wieksze to lepiej zainwestowac w mocne zluszczanie kwasami. Mnie to bardziej pomoglo. Tylko, ze takie zluszczanie lepiej zrobic u lekarza dermatologa (okolo 200zl za jeden zabieg), ktory prowadzi prywatny zaklad, a nie w gabiniecie kosmetycznym (okolo 130zl za jedno zluszczanie), poniewaz profesjonalny dermatolog uzywa duzo mocniejszych srodkow i juz po 3 zabiegach sa lepsze efekty, niz po wielu zabiegach w salonie pieknosci.\nWiem co mowie, sprawdzilam wszystko na sobie\nCzas edycji: 2010-04-16 o 20:18\n2010-04-19, 12:22 #5\nVichy Dermablend jest dla wszystkich. Polecam.\n2011-05-20, 18:03 #6\nCzy nie macie momentami wrażenia, że faceci mają już lepsze kolekcje kosmetyków od nas? Mnie mój facet ciągle zaskakuje. Kiedyś miał tylko dezodorant i wodę po goleniu, a dziś np. widziałam u niego krem do prysznic od Guam Uomo. Oczywiście wcześniej też korzystał z "czegoś" do kąpieli, ale był to jakiś najtańszy kosmetyk z Roosmana.


Jan Kulczyk wszystkie artykuły na stronie Party.pl | Party.pl\nJoanna Przetakiewicz wyjaśnia, że ślubu wcale nie było. Jak została więc żoną Kulczyka?\n5 zdjęć 5 stycznia 2018\nA może by tak… sprawić sobie jacht Jana Kulczyka za 650 milionów?\nzobacz 00:59 19 października 2017\n24 czerwca 1950\nJan Kulczyk - polski przedsiębiorca, były właściciel przedsiębiorstwa Kulczyk Holding mieszczącego się w Warszawie i międzynarodowej grupy inwestycyjnej Kulczyk Investments z siedzibą w Luksemburgu. Doktor nauk humanistycznych w zakresie nauk politycznych i prawa międzynarodowego. Od 2002 roku aż do śmierci niezmiennie klasyfikowany we wszelkich rankingach najbogatszych Polaków. Trzynaście razy zajął pierwsze miejsce na takiej liście, sporządzanej przez tygodnik Wprost. W 2013 roku branżowe czasopismo Forbes umieściło Jana Kulczyka z majątkiem wartym 3,5 mld $ na 384. miejscu wśród najbogatszych ludzi świata. Żaden Polak wcześniej ani później nie powtórzył tego osiągnięcia.\nJan Kulczyk w 1968 roku ukończył VI Liceum Ogólnokształcące im. Jana i Jędrzeja Śniadeckich w Bydgoszczy. Następnie studiował prawo na Uniwersytecie im. Adama Mickiewicza i handel zagraniczny na Akademii Ekonomicznej w Poznaniu. Doktorat obronił w 1975 roku, by rozpocząć pracę naukową w Instytucie Zachodnim w Poznaniu, gdzie do sfery jego głównych zainteresowań zaliczała się tematyka niemiecka. Biznesem zajął się w 1981 roku kiedy za pieniądze otrzymane od ojca Henryka założył firmę handlową Interkulpol. Było to jedno z pierwszych przedsiębiorstw zagranicznych, jakie powstały w Polsce po II wojnie światowej. Start w biznesie ułatwiło mu zasiadanie we władzach Polsko-Polonijnej Izby Handlowej Inter-Polcom kontrolującej działalność wszystkich firm polonijnych.\nW 1988 roku Jan Kulczyk i jego firma Kulczyk Tradex został oficjalnym dealerem Volkswagena w Polsce. Trzy lata później zarejestrował spółkę Kulczyk Holding Sp. z o.o., która potem została przekształcona w spółkę akcyjną. Inwestował między innymi w Telekomunikację Polską, Polską Telefonię Cyfrową i Polskie Towarzystwo Emerytalne Warta S.A. Przedmiotem jego interesów były też m.in. energetyka, gaz i ropa naftowa, nieruchomości. Miał udziały w spółkach Autostrada Wielkopolska, Autostrada Wielkopolska II, Autostrada Eksploatacja oraz Pekaes SA. Stworzył też Polenergię, pierwszą prywatną grupę energetyczną o zasięgu międzynarodowym.\nJan Kulczyk był współzałożycielem i dwukrotnym prezesem Polskiej Rady Biznesu. Zasiadał również w Radzie Dyrektorów Międzynarodowego Zielonego Krzyża, organizacji pod auspicjami ONZ zajmującej się bezpieczeństwem ekologicznym. Dotacją w wysokości 20 milionów zł wsparł budowę Muzeum Historii Żydów Polskich w Warszawie. Razem z żoną Grażyną Kulczyk otworzył w Poznaniu starannie zaprojektowane centrum handlowe Stary Browar, które wyznaczało nowe standardy, jeśli chodzi o galerie handlowe. Był nazywany mecenasem polskiego sportu. Kulczyk angażował w sponsoring ogromne pieniądze. W 2012 roku jego spółki zostały strategicznym sponsorem polskiej reprezentacji olimpijskiej wybierającej się na igrzyska olimpijskie do Londynu.\nPrywatnie przez wiele lat związany z Grażyną Kulczyk, z którą rozwiódł się w 2006 roku. Razem z nią wiele inwestował w sztukę. Potem związał się z Joanną Przetakiewicz, którą poznał w 2005 roku. Rozstali się w 2013 roku. Ze związku z Grażyną Kulczyk miał dwoje dzieci - Dominikę i Sebastiana. To oni odziedziczyli po ojcu ogromną fortunę wycenianą na 15,1 mld złotych, a prezesem firmy Kulczyk Investments został Sebastian Kulczyk.\nNajbogatszy Polak i znany biznesmen zmarł w Wiedniu w wieku 65 lat. Przyczyną śmierci były powikłania pooperacyjne.\nPałac Jana Kulczyka jest na sprzedaż za 185 milionów dolarów. Zobacz ściany pokryte złotem, futrem... To nie dom, to bajka! ZDJĘCIA\n12 zdjęć 18 października 2017\nJoanna Przetakiewicz wspomina związek z Janem Kulczykiem. Odpowiada, czy miała "kompleks Jana": "Wiele mu zawdzięczam"\n4 zdjęcia 29 lipca 2016\nWzruszające sceny z mszy za zmarłego Jana Kulczyka. Oprócz rodziny nie zabrakło znanych osób ZDJĘCIA\n5 zdjęć 29 lipca 2016


CZARNUSZKA OLEJ 100ml OLEJISTNY\nOlej z czarnuszki tłoczony na zimno, nieoczyszczony, nierafinowany. Zawiera kwasy tłuszczowe omega-6 i omega-9 jak również tymochinon, dzięki któremu ma działanie przeciwzapalne, przeciwbólowe, przeciwnowotworowe, chroni również nerki i wątrobę. Zwalcza stany zapalne w organiźmie i na skórze, wzmacnia system immunologiczny. Zapewnia witalność i jasność umysłu.\nOlej z czarnuszki dla zdrowia:\nDoskonale wzmacnia układ immunologiczny. Poprawia funkcjonowanie układu odpornościowego.\nPosiada wyjątkowe działanie jako środek przeciwalergiczny. Obecny w oleju z czarnuszki tymochinon blokuje wytwarzanie histaminy (białka odpowiedzialnego za reakcje alergiczne). Zmniejsza reakcje i łagodzi objawy na pojawiające się w naszym otoczeniu alergeny.\nPomaga w dolegliwościach żołądkowych takich jak grypa żołądkowa, nieżyt żołądka, refluks oraz wrzody żołądka czy dwunastnicy.\nPozytywnie wpływa na przemianę materii i poprawia trawienie.\nReguluje poziom cukru we krwi, dzięki czemu jest pomocny w leczeniu cukrzycy.\nStabilizuje poziom cholesterolu i trójglicerydów, przeciwdziałając miażdżycy i chorobom układu krążenia, jak również zakrzepom. Obniża ciśnienie krwi i poziom złego cholesterolu.\nŚwietnie działa w przypadku zmian skórnych, takich jak trądzik, łuszczyca, grzybica, wysypki, atopowe zapalenie skóry jak również przy wszelkich zmianach wywołanych zakażeniem bakteryjnym lub poparzeniem słonecznym. Przyspiesza proces gojenia ran powstałych w wyniku owrzodzeń, skaleczeń czy wycieków ropnych. Ponadto reguluje wydzielanie się sebum.\nZwiększa odporność na stres, uspokaja, przeciwdziała stanom lękowym i depresyjnym, poprawia ogólne samopoczucie. Pomaga w zwalczaniu symptomów epilepsji i choroby Parkinsona.\nPomaga w leczeniu astmy i zapalenia oskrzeli, poprawia wydolność płuc.\nCzarnuszka dzięki poprawie funkcji układu immunologicznego skutecznie zwalcza pasożyty, m.in. owsiki, blastocytozę, włośnia krętego, tasiemca.\nDzięki działaniom antyzapalnym i antyutleniającym oraz dużej zawartości kwasów tłuszczowych, zwiększa mineralną gęstość kości. Co za tym idzie – chroni przed osteoporozą.\nRegularne stosowanie oleju z czarnuszki reguluje poziom hemoglobiny i erytrocytów.\nPrzeciwdziała tworzeniu się kamieni nerkowych. Obniża stężenie szczawianów w moczu.\nŁagodzi bóle głowy, również bóle migrenowe. Jest jednym z najbardziej skutecznych naturalnych sposobów na walkę z bólem.\nWspomaga leczenie problemów z prostatą.\nSkuteczny przy zwalczaniu chronicznego zmęczenia. Korzystnie wpływa na stan psychiczny. Stabilizuje nastrój, neutralizuje stany lękowe. Eliminuje również zaburzenia snu.\nOlej z czarnuszki w kosemtyce:\nZnakomicie wzmacnia włosy – pobudza ich porost, zapobiega wypadaniu, zwiększa gęstość oraz zwalcza łupież.\n100% oleju z nasion czarnuszki\nPrzechowywać w temperaturze 5-10 °C.\nWartość energetyczna: 3768 kJ/900 kcal\nkwasy tłuszczowe wielonienasycone: 66 g\nPamiętaj olej z czarnuszki stosuje się na zimno. Najlepiej jest spożywać 1-2 łyżki dziennie. Najlepsze efekty przyniesie jego systematyczne stosowanie. Dobrym sposobem jest dodanie do oleju z czarnuszki łyżki miodu lub koktajlu.\nMożna pokusić się o stwierdzenie, że olej z czarnuszki to istny eliksir. I tak jak z każdym z naszych olejów obchodzimy się z nim szczególnie. Nie używamy żadnych chemicznych dodatków ani konserwantów, nie rafinujemy, tłoczymy na zimno, schładzamy do max 10 st C i nie dopuszczamy do niego promieni UV. Wszystko to po to aby był świeży, bo tylko wtedy zachowuje pełną wartość. Przygotowujemy go z największą pieczołowitością.\nWystępujący osad jest zjawiskiem naturalnym.\nMIÓD Z CZARNUSZKĄ I CZARNYM BZEM 1150G PASIEKI SADOWSKICH\nCZARNUSZKA NASIONA 50G DARY NATURY\nCZARNUSZKA OLEJ 250ml OLEJISTNY


Poznaję świat i kropka! Dlaczego kurzu przybywa i czemu parzy pokrzywa - Oceny, opinie, ceny - Rafał Klimczak - Lubimyczytać.pl\nSuper książka, która w przystępny sposób tłumaczy trudne dla dziecka zagadnienia. Warto posiadać pozycję w swoim zbiorze.\nPoznaję świat i kropka! Dlaczego kurzu przybywa i czemu parzy pokrzywa jest drugą książeczką z serii. Autor po kilku zdaniach wprowadzenia przechodzi do opowiadania historyjek, z których dowiemy się między innymi tego, co to są włosy, skąd się bierze kurz i deszcz, jak działa długopis, dlaczego niebo jest błękitne a pokrzywa parzy. Oczywiście nie są to suche fakty, ale...\nDruga część przygód niebieskiej Kropeczki, mieszkającej wraz z innymi zabawkami w pokoju sympatycznej Asi. Główna bohaterka pozostaje sobą, czyli małym, bystrym i ciekawskim stworzonkiem patrzącym zdumionymi oczyma na świat dookoła. Tym razem mali czytelnicy odkryją wraz z nią czym są włosy i do czego służą one ludziom oraz zwierzętom. Poznają bliżej przyczyny uczulenia na kurz, obieg wody w przyrodzie (łącznie z tym, jak powstaje kropla deszczu) i jej zastosowanie w codziennym życiu. Kropka i jej przyjaciele porównają budowę ołówka i długopisu, a także wyjaśnią zasadę działania tego ostatniego. Odkryją, czy niebo rzeczywiście jest niebieskie i dlaczego pokrzywa parzy. Na końcu książeczki, podobnie jak w pierwszej części, znajdziecie sekcję CIEKAWOSTKI, a w niej krótkie, skondensowane wyjaśnienia dotyczące poruszonych wcześniej tematów.\nPublikacja w żaden sposób nie odbiega od swojej poprzedniczki, mamy identyczną budowę (trzy główne, dość długie rozdziały plus końcowe podsumowanie) oraz tę samą, przyjazną szatę graficzną.\nDruga część jest równie dobra i interesująca jak pierwsza. Wszystko napisane miłym dla oka i ucha językiem, no i oczywiście dostosowane do wieku dzieci. Nie jest to nudna publikacja popularno-naukowa, lecz zbiór pozytywnych, ciekawych historyjek z życia pluszowych mieszkańców pewnego dziecięcego pokoju, w które subtelnie wplecione zostają podstawowe informacje z zakresu przyrody.\nDruga część przygód niebieskiej Kropeczki, mieszkającej wraz z innymi zabawkami w pokoju sympatycznej Asi. Główna bohaterka pozostaje sobą, czyli małym, bystrym i ciekawskim stworzonkiem patrzącym zdumionymi oczyma na świat dookoła. Tym razem mali czytelnicy odkryją wraz z nią czym są włosy i do czego służą one ludziom oraz zwierzętom. Poznają bliżej przyczyny uczulenia na...\nMacie w domu dziecko/dzieci.... Czy są one wszystkiego ciekawe? Na pewno! :) A czy w związku z tym zadają całe mnóstwo pytań, na które nie zawsze macie prostą i zrozumiałą dla nich odpowiedź? Mnie się czasem zdarza, że córka zapyta o coś, niby całkiem oczywistego, ale jest to aż tak proste, że nie potrafię jej tego wyjaśnić w sposób, by wszystko zrozumiała i nie miała już...\nRecenzję znajdziecie na moim blogu. Zapraszam ^_^\nAlicja to bardzo ciekawe świata dziecko. Gdy w telewizji jest jakiś program naukowy lub dokumentalny na temat świata, podróży, zabytków, kosmosu czy zwierząt - naprawdę z ogromnym trudem odciągam ją od telewizora. Moje dziecko uwielbia dowiadywać się nowych rzeczy. Jej książki edukacyjne i wszelkiego rodzaju encyklopedie są stale w użytku. Nie ukrywam, że niekiedy moja...\nSympatyczna historia, w którą wplecione zostają ciekawostki ze świata nauki i przyrody. Młody czytelnik dowie się z niej m.in. skąd się bierze deszcz, dlaczego pokrzywa parzy, jaki kolor ma w rzeczywistości...\nPewnego dnia, mała niebieska kropka wyskoczyła z samego końca książki i poturlała się po podłodze. Świat zewnętrzny bardzo ją zainteresował. Niestety wielu...\nDodaj cytat z książki Poznaję świat i kropka! Dlaczego kurzu przybywa i czemu parzy pokrzywa


Budowa DTŚ: Odliczanie trwa. Ma być gotowa za 2 miesiące - Dziennikzachodni.pl\nBudowa DTŚ: Odliczanie trwa. Ma być gotowa za 2 miesiące\n19 października 2015 21:25 19.10.2015 21:25\nBudowa Drogowej Trasy Średnicowej na finiszu. Powinna zakończyć się w grudniu Do końca września ostatni odcinek średnicówki był gotowy w 80 procentach\nBodaj najważniejszym elementem całego odcinka będzie oczywiście 550-metrowy tunel pod ulicami Dworcową i Zwycięstwa. To drugi co do długości taki obiekt w województwie i czwarty w całym kraju. Gotowe są już wszystkie segmenty stropów oraz kanały kablowe, niezbędne do funkcjonowania systemów monitoringu i bezpieczeństwa. Rozpoczęło się montowanie okładzin ścian wewnątrz tunelu i betonowanie jezdni głównych. Istotne jest również to, co znajdzie się nad tunelem. Śródmieście zyska nową przestrzeń łączącą się z parkiem Chopina. Ma ona zostać zagospodarowana. Część bliższa Palmiarni zmieni się w zieleniec ze ścieżkami spacerowymi i ławkami, zaś na fragmencie bliżej ulicy Dubois powstaną nowe miejsca parkingowe.\nValdorf (gość) 20.10.15, 10:49:48\nMam nadzieję jako mieszkaniec centrum Gliwic przy ul.Mikołowskiej że po otwarciu DTŚ ruch tranzytowy tirów pow.15t. przez dk44 w centrum miasta zostanie całkowicie zakazany. Głównie zwracam się z...rozwiń całość\nMam nadzieję jako mieszkaniec centrum Gliwic przy ul.Mikołowskiej że po otwarciu DTŚ ruch tranzytowy tirów pow.15t. przez dk44 w centrum miasta zostanie całkowicie zakazany. Głównie zwracam się z prośbą w imieniu mieszkańców do Prezydenta FRANKIEWICZA chodzi o zabudowaną część ul. Mikołowskiej od ul.Dunikowskiego do skrzyżowania z Wrocławską , Przczyńską ,Nowy Świat .Ciśnienie akustyczne jakie kumuluje się między budynkami jest nie do zniesienia nie wspominając o pękających budynkach rozszczelniających się oknach liczę że średnicowa trasa DTŚ pozwoli na odciągnięcie tirów od centrum a nie jeszcze bardziej napuścić.zwiń