Docker dla początkujących Webinar, 20 lipca 2016 Start: 12:00

Podobne dokumenty
Licencjonowanie pytania i odpowiedzi

Tworzenie maszyny wirtualnej

Kontenery w Linux. Jakub Pieńkowski 10 maja, Jakub Pieńkowski Kontenery w Linux 10 maja, / 26

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

kontener aplikacyjny nie tylko dla programistów Łukasz Piątkowski Poznańska Impreza Wolnego Oprogramowania 2014

kontener aplikacyjny nie tylko dla programistów Łukasz Piątkowski Koło Naukowe SKiSR

Wprowadzenie do informatyki

Serwer SAMBA UDOSTĘPNIANIE UDZIAŁÓW SIECIOWYCH PIOTR KANIA

Zmiana sposobu dostarczania aplikacji wspierających funkcje państwa

Tworzenie oprogramowania

- udostępnić anonimowym użytkownikowi Internetu pliki przez serwer FTP,

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Graficzny terminal sieciowy ABA-X3. część druga. Podstawowa konfiguracja terminala

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

UMOWY CYWILNOPRAWNE Instalacja, rejestracja i konfiguracja programu

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer.

SERWER AKTUALIZACJI UpServ

WZÓR UMOWY. Zawarta w Białymstoku, w dniu.. pomiędzy:

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Git rozproszony system kontroli wersji

Konwersja maszyny fizycznej na wirtualną.

Konfiguracja vsftpd ( Very Secure FTP Server )

26.X.2004 VNC. Dawid Materna

INSTRUKCJA INSTALACJI I PIERWSZEGO URUCHOMIENIA APLIKACJI Rodzajowa Ewidencja Wydatków plus Zamówienia i Umowy

CyberGuru Wirtualizacja na platformie Hyper-V w pigułce. Prezentuje: Kamil Frankowicz

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

Win Admin Replikator Instrukcja Obsługi

27/13 ZAŁĄCZNIK NR 4 DO SIWZ. 1 Serwery przetwarzania danych. 1.1 Serwery. dostawa, rozmieszczenie i zainstalowanie 2. serwerów przetwarzania danych.

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Letnia Akademia SUSE. Implementacja nowych rozwiązań open source wszystko, co musisz wiedzieć!

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Microsoft System Center Virtual Machine Manager 2012

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Tomasz Greszata - Koszalin

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Ping. ipconfig. getmac

Wirtualizacja w praktyce.

Sposoby zdalnego sterowania pulpitem

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Wykaz zmian w programie SysLoger

System kontroli dostępu ACCO NET Instrukcja instalacji

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

systemd-nspawn kontenery bliższe sercu administratora

DHL CAS ORACLE Wymagania oraz instalacja

Instrukcja użytkownika

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

SERWER AKTUALIZACJI UpServ

PHP: bazy danych, SQL, AJAX i JSON

7. zainstalowane oprogramowanie zarządzane stacje robocze

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Instrukcja konfiguracji funkcji skanowania

Wirtualizacja sieci - VMware NSX

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

SERWER AKTUALIZACJI UpServ

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Środowisko programisty. Środowisko programisty 1/35

Client Management Solutions i Mobile Printing Solutions

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

SysLoger. Instrukcja obsługi. maj 2018 dla wersji aplikacji (wersja dokumentu 2.5)

BACKUP BAZ DANYCH FIREBIRD

VMware vsphere: Automation Fast Track

Elastyczna sieć dla rozwiązań Cloud Open vswitch

Dokumentacja techniczna

Estomed2. 1. Wstęp. 2. Instalacja Systemu Estomed Jak zainstalować Estomed2. Hakon Software sp. z o. o. Podręcznik instalacji

Administratora CSIZS - OTM

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Połączenia. Obsługiwane systemy operacyjne. Instalowanie drukarki przy użyciu dysku CD Oprogramowanie i dokumentacja

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

CVS system kontroli wersji

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Monitor maszyn wirtualnych

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

PureSystems zautomatyzowane środowisko aplikacyjne. Emilia Smółko Software IT Architect

Silent setup SAS Enterprise Guide (v 3.x)

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Spis treści. Instalacja oprogramowania...j... 8 Instalacja pakietów poprzez rpm...j Listowanie zawartości folderu...j... 14

Instalacja programu. Po naciśnięciu przycisku Dalej pojawi się okno, w którym naleŝy dokonać wyboru docelowej lokalizacji.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Client Management Solutions i Mobile Printing Solutions

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Bezpieczeństwo systemów informatycznych

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

Bezpieczeństwo IT z Open Source na nowo

VMware. Prezentacja na Systemy Operacyjne

Software RAID funkcje dostarcza zaimplementowane oprogramowanie, bez wykorzystania z dedykowanych kontrolerów.

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

O D P O W I E D ZI na zapytania w sprawie SIWZ cz II

2018/10/16 20:47 1/5 3 Ekrany

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

Client Management Solutions i Universal Printing Solutions

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Transkrypt:

Docker dla początkujących Webinar, 20 lipca 2016 Start: 12:00 Konrad Rzentarzewski konrad.rzentarzewski@linuxpolska.pl Solutions Architect Linux Polska Sp. z o.o.

Czym jest docker? Docker to platforma służąca tworzeniu, dostarczaniu oraz uruchamianiu aplikacji w zwirtualizowanym środowisku kontenerów. Komponenty Docker: - Docker Engine - Docker Hub - Docker Machine - Docker Swarm - Docker Compose - niezależne narzędzia (otwarte API)

Historia: sam metal Problemy: - powolne wdrażanie - olbrzymie koszta - zmarnowane zasoby - trudne w skalowaniu - trudne w migracji - często występujący vendor lock-in

Historia: wirtualizacja Zalety: - Jedną fizyczną maszynę można podzielić na wiele wirtualnych - Lepsze zarządzanie zasobami - Łatwiejsze w skalowaniu - Nowy model opłat w cloud: pay-as-you-go

Historia: wirtualizacja Ograniczenia: - Każda VM nadal wymaga alokacji zasobów - CPU - RAM - dysk - system operacyjny - Im więcej VM, tym więcej potrzebnych zasobów - Wiele systemów (Guest OS) to wiele zmarnowanych zasobów - Bez gwarancji przenośności aplikacji

Teraz: kontenery Wirtualizacja oparta o kontenery używa kernela systemu operacyjnego hosta do uruchamiania wielu instancji aplikacji gości. - Każda instancja gościa jest nazywana kontenerem - Każdy kontener posiada: - system plików (rootfs) - procesy - pamięć - urządzenia - porty sieciowe

Teraz: kontenery Wirtualizacja oparta o kontenery używa kernela systemu operacyjnego hosta do uruchamiania wielu instancji aplikacji gości. - Każda instancja gościa jest nazywana kontenerem - Każdy kontener posiada: - system plików (rootfs) - procesy - pamięć - urządzenia - porty sieciowe

Kontenery vs. VM - Kontenery są lżejsze - Brak konieczności instalacji systemu operacyjnego (Guest OS) - Mniejsze wymagania względem zasobów (CPU/RAM) - Większa gęstość - Większa przenośność

Komponenty: kernel i Docker Engine - Docker Engine zarządza kontenerami - tworzenie - dystrybucja - uruchamianie - Docker Engine używa funkcji kernela linuksa - namespaces - control groups (cgroups) - Funkcje te zapewniają izolację

Demo: instalacja

Architektura klient/serwer - Klient (komenda docker) wysyła polecenia do demona - Demon wykonuje pracę - Klient i demon mogą znajdować się - na tym samym serwerze - na różnych serwerach - Oprócz oficjalnego klienta - 3rd party - automatyzacja - orkiestracja - GUI (Kitematic)

Architektura klient/serwer - Klient (komenda docker) wysyła polecenia do demona - Demon wykonuje pracę - Klient i demon mogą znajdować się - na tym samym serwerze - na różnych serwerach - Oprócz oficjalnego klienta - 3rd party - automatyzacja - orkiestracja - GUI (Kitematic)

Wersje dockera - Szybko rozwijany - Nowe funkcjonalności - Wersja klienta i serwera powinny być zgodne

Kontenery i obrazy - Obrazy - szablony (r/o) do tworzenia kontenera - wykorzystaj istniejący lub zbuduj własny - przechowywane w Docker Hub lub lokalnym registry - Kontenery - izolowana platforma uruchomieniowa dla aplikacji - zawiera wszystko (system plików, biblioteki, zależności), co jest potrzebne aplikacji - bazuje na jednym (bazowy) lub więcej obrazie (warstwy)

Docker Hub Docker Hub to publiczny rejestr zawierający dużą liczbę gotowych do użycia obrazów.

Instrumentarium Narzędzia: - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje uruchamianie kontenerów - Docker Compose - tworzy wielokontenerowe aplikacje - np. Load Balancer + Aplikacja Web (2 sztuki) + Memcache + Baza Danych

Zalety dockera - Podział odpowiedzialności - deweloperzy budują aplikację - operatorzy budują środowisko - w ramach wspólnego narzędzia (Infrastructure as Code) - Szybki cykl wytwarzania - Duża przenośność - Dobra skalowalność - Większa gęstość

Zalety dockera - Podział odpowiedzialności - Szybki cykl wytwarzania - wszystko w jednym miejscu - brak problemów z kompatybilnością między środowiskami - brak problemów z zależnościami - Duża przenośność - Dobra skalowalność - Większa gęstość

Zalety dockera - Podział odpowiedzialności - Szybki cykl wytwarzania - Duża przenośność - buduj w jednym miejscu, uruchamiaj w wielu - Dobra skalowalność - łatwo dodać nowe kontenery i hosty (Docker Engines) jeśli zajdzie taka potrzeba - Większa gęstość - brak balastu charakterystycznego dla Guest OS (VM)

Obrazy - Gotowe do użycia - Znajdują się w wielu repozytoriach

Demo: Docker Hub

Demo: obrazy lokalne - Wyświetlanie lokalnych obrazów: docker images - Obrazy składają się z warstw - Jeśli obrazu nie ma na dysku - docker pobierze go automatycznie z Docker Hub - można zmienić konfigurację, aby pobierał domyślnie z prywatnego repozytorium lokalnego (registry)

Tagi - Wszystkie obrazy są dostępne w namespace zbudowanym wg. zasady: - repozytorium/nazwa:tag - w praktyce: autor/aplikacja:wersja - Jeden obraz może mieć wiele tagów - Domyślny tag to latest - Docker Hub umożliwia wyświetlanie listy tagów dla obrazu

Tworzenie kontenerów - Komenda: docker run - Składnia: - docker run [opcje] [obraz] [komenda] [argumenty] - Przykład: - docker run ubuntu:14.04 echo Hello world

Demo: docker run

Terminal w kontenerze - Opcje -i -t - -i - dołącz do STDIN kontenera - -t - zaalokuj pseudoterminal - podaj shell jako komendę - Przykład: - docker run -i -t ubuntu:latest /bin/bash

Demo: terminal

Procesy w kontenerze - Kontener działa tak długo jak proces, który podajesz jako argument dla docker run - Twoja komenda zawsze ma PID=1 w kontenerze

Demo: procesy

ID kontenera - Do kontenera można odwoływać się - za pomocą nazwy - za pomocą ID kontenera - Nazwa oraz krótkie ID jest dostępne w docker ps - Długie ID dostępne jest po starcie oraz w docker - Używaj docker - docker ps -a, ps, inspect aby znajdować kontenery aby znajdować zatrzymane kontenery

Uruchamianie w tle - Znane także jako uruchamianie demona - Użyj flagi -d - Aby zobaczyć STDOUT i STDERR użyj docker logs - Przykład: - docker run -d centos:7 ping 127.0.0.1 -c 50

Demo: w tle

Praktyczny kontener Czas uruchomić coś, co będzie choć w minimalnym stopniu przydatne - np. udostępni usługę sieciową! - Uruchamiamy aplikację www w kontenerze - Flaga -P pozwala nam zamapować port sieciowy - Przykład: docker run -d -P tomcat:7

Demo: praktycznie

Demo: praktycznie

Warstwy obrazów - Obrazy składają się z wielu warstw - Warstwa to po prostu inny obraz - Każdy obraz zawiera warstwę bazową - to ta na samym dole - Docker używa systemu copy on write - Warstwy są dostępne tylko do odczytu - Dodatkowa warstwa jest tworzona przy starcie kontenera - obsługuje zapis - to ta na wierzchu

docker commit - Zapisuje zmiany wprowadzone w kontenerze jako nowy obraz - Składnia: docker commit [opcje] [ID kontenera] [obraz w repo] - Nazwa obrazu w repozytorium: autor/aplikacja:wersja - W docker commit można użyć nazwy kontenera zamiast ID

Demo: docker commit

Dockerfile Dockerfile to plik konfiguracyjny zawierający instrukcje potrzebne do budowy obrazu. - W sposób programowy i powtarzalny tworzy własny obraz - Bardziej efektywny w użyciu niż docker commit - Łatwy do integracji z procesami CI i wrażaniem nowych wersji aplikacji

Instrukcje Dockerfile - Instrukcje to kroki wykonywane w celu zbudowania obrazu - FROM określa obraz bazowy - RUN określa komendę do wykonania Przykład: FROM ubuntu:14.04 RUN apt-get install vim RUN apt-get install curl

Dockerfile RUN - Każda komenda RUN zostanie wykonana na zapisywalnej warstwie, a następnie system wykonuje docker commit tworząc nowy obraz pośredni - Można łączyć wiele komend w ramach jednego obrazu pośredniego za pomocą konstrukcji && Przykład: RUN apt-get update && \ apt-get install -y && \ curl vim openjdk-7-jdk

docker build - Składnia: docker build [opcje] [ścieżka do projektu] - Ścieżka do projektu to miejsce, gdzie znajduje się Dockerfile - Typowo podaje się opcję -t dodającą tag, np: - docker build -t eevee/myapp:1.0.

Demo: docker build

Dockerfile CMD - CMD definiuje domyślną komendę jaka będzie wykonana po utworzeniu kontenera - CMD nie jest wykonywane w procesie budowania obrazu - Dwa możliwe formaty: - Shell (string) - np. /usr/bin/my_server - Exec (tablica) - np. [ /bin/ping, 127.0.0.1, -c, 50 ] - Może pojawić się tylko raz w Dockerfile - Może być zmienione w czasie uruchamiania kontenera - docker run [obraz] [komenda]

Demo: docker build

Dockerfile ENTRYPOINT CMD i ENTRYPOINT to nie to samo! - Definiuje komendę jaka ma być uruchomiona po utworzeniu kontenera - Komenda uruchomieniowa i CMD są przekazywane jako argumenty do programu wskazanego przez ENTRYPOINT - Format Shell lub Exec - Standardowo jest to sh -c

Demo: docker build

Startowanie i zatrzymywanie - Znajdź kontener po ID lub nazwie: docker - docker start [ID] - docker stop [ID] ps

Demo: start/stop

Wchodzenie do terminala - docker exec umożliwia uruchomienie (wstrzyknięcie) dodatkowego procesu do już działającego kontenera - Uruchom /bin/bash, aby otrzymać dostęp do terminala - Przykład: docker exec -it [ID] /bin/bash - Wyjście z terminala przez kontenera exit lub logout nie zatrzyma

Demo: docker exec

Usuwanie kontenerów - Można usuwać tylko zatrzymane kontenery - docker rm - Należy podać nazwę lub ID

Demo: docker rm

Usuwanie lokalnych obrazów - Można usuwać tylko obrazy z których nie korzystają uruchomione kontenery - Jeśli obraz ma wiele tagów trzeba usunąć wszystkie po kolei - docker rmi - Należy podać tag lub ID obrazu - Niektóre obrazy (np. przejściowe) mogą nie mieć tagu

Demo: docker rmi

Dodawanie repozytorium - Użytkownicy mogą tworzyć własne repozytoria - publiczne lub prywatne - Lokalne obrazy można uploadować do repozytoriów - docker push [repozytorium/nazwa:tag] - Lokalne obrazy muszą mieć takie same tagi jakie będą dostępne w zdalnym repo (obraz jest transferowany z utworzonymi lokalnie tagami) - Tagi trzeba dodać najpierw lokalnie przed umieszczeniem obrazu w repozytorium - docker tag [ID] [tag]

Demo: repozytoria

Demo: repozytoria

Wolumeny Wolumen to określony katalog w kontenerze, który zostaje przeznaczony na przechowywanie danych trwałych, niezależnie od cyklu życia konteneru. - Wolumeny nie są częścią obrazów - Są nadal utrzymywane, jeśli obrazy zostaną skasowane - Mogą być zamapowane na katalog znajdujący się na host - Mogą być zamapowane w wielu kontenerach (współdzielone) - Wolumeny są montowane przy starcie kontenera - Ścieżki muszą być absolutne (od /)

Wolumeny w Dockerfile - Instrukcja VOLUME tworzy punkt montowania - Nie można w ten sposób mapować wolumenów do katalogów hosta - Wolumeny są inicjalizowane przy starcie kontenera - Opcjonalna składnia JSON Przykład: VOLUME /myvol VOLUME /srv/website1.com /srv/website2.com VOLUME [ myvol1, myvol2 ]

Zastosowanie wolumenów - Oddzielenie danych od procesu je tworzącego - Współdzielenie danych pomiędzy kontenerami

Demo: wolumeny

Mapowanie portów sieciowych - Kontenery mają własne adresy IP, widoczne wyłącznie w obrębie hosta - Mapowanie udostępnia port konteneru na IP hosta - Porty mogą być mapowane ręcznie (-p host:gość) lub automatycznie (-P) w zakresie 49153:65535 - automatyczne mapowanie działa wyłącznie podanych w Dockerfile za pomocą EXPOSE - Przykład: docker run -d -p 8080:80 nginx:1.7 - port w kontenerze: 80 - port zamapowany i widoczny na hoście: 8080 dla portów

Demo: mapowanie portów

Dockerfile EXPOSE - Instrukcja EXPOSE oznacza port jako używany przez usługę w kontenerze - Port nadal musi być zamapowany (-p/-p) przy uruchamianiu Przykład: FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y nginx EXPOSE 80 443 CMD [ nginx, -g, daemon off; ]

Linkowanie kontenerów Linkowanie jest to proces umożliwiający wymianę danych pomiędzy kontenerami. - Kontenery dzielimy na źródłowe i docelowe - Kontenery docelowe mają dostęp do danych na kontenerach źródłowych - Linki są tworzone na podstawie nazw kontenerów - Kontener źródłowy musi być utworzony jako pierwszy - Kontener docelowy musi być utworzony z opcją --link

Linkowanie kontenerów Linkowanie jest to proces umożliwiający wymianę danych pomiędzy kontenerami. - Sugerowane jest, aby dawać kontenerom sensowne nazwy (-name) - Kontenery mogą się komunikować bez konieczności ustawiania EXPOSE - Powszechnie stosowane przy wykorzystywaniu wartwowych aplikacji i w mikroserwisach

Demo: linkowanie

Docker w procesie Continous Integration - Demonstracja przykładowej techniki - Docker w procesie CI - Docker Hub wykrywa zmiany w repozytorium Github - Natychmiast buduje nową wersję obrazu - Ustawia odpowiednio tag latest - Nowy obraz jest gotowy do użycia

Demo: CI

Subskrypcja Docker Datacenter FREE T RIAL bit.ly /ucpd emo Subskrypcja Docker Datacenter to zintegrowany zestaw narzędzi do zbudowania platformy CaaS pozwalającej przenieść aplikacje budowane w środowisku deweloperskim na docelowe środowisko produkcyjne. Business Day Support - 6am 6pm Business Critical Support - 24/7/365 Docker Universal Control Plane Docker Trusted Registry Chcesz wiedzieć więcej o modelu licencyjnym Docker? Zajrzyj na: http: //linuxpolska.pl/rozwiazania/ technologie-open-source/docker/ bit.ly/lp-docker Supported Docker Engine

Docker: easy and fun! curl https://get.docker.com/ sh

W przypadku dodatkowych pytań zachęcam do kontaktu emailowego. Konrad Rzentarzewski konrad.rzentarzewski@linuxpolska.pl Solutions Architect Linux Polska Sp. z o.o.