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



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

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

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

Puk, puk! Kto tam? Eeeee... Spadaj!

Proces certyfikowania aplikacji na platformie PureSystems. Rafał Klimczak Lab Services Consultant

systemd-nspawn kontenery bliższe sercu administratora

Linux Contextualization

Open vswitch lab. Radosław Kujawa 14 czerwca 2017 OSEC

# ip addr add dev eth1 $ sudo ip addr add dev eth1 Uwaga: Ustawienia te zostaną utracone po restarcie systemu

Ko n f i gura cja p ra cy V ISO z bazą SQL S e rve r

Elastyczna sieć dla rozwiązań Cloud Open vswitch

Usługi sieciowe w kontenerach systemu operacyjnego CoreOS

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

Przetwarzanie danych w chmurze

Tryb pracy urządzenia jest wyświetlany wewnątrz trójkątnych nawiasów, oto kilka oznaczeń:

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

OpenContrail jako wtyczka do OpenStacka. Bartosz Górski, Paweł Banaszewski CodiLime

Zapis adresu. Adres IPv6 zapisujemy w postaci szesnastkowej, w ośmiu blokach 2-bajtowych Przykład:

Wirtualizacja w praktyce.

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

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

Rozproszony system kontroli wersji GIT. Piotr Macuk

GIT. System Kontroli wersji GIT. Rafał Kalinowski

IPv6. Wprowadzenie. IPv6 w systemie Linux. Zadania Pytania. budowa i zapis adresu, typy adresów tunelowanie IPv6 w IPv4

Tomasz Greszata - Koszalin

Asseco dla Zdrowia r.

Cloud Customers Relationships Wymagania wersja systemu:

SERWER AKTUALIZACJI UpServ

Wirtualizacja Hyper-V: sposoby wykorzystania i najnowsze wyniki badań

R o g e r A c c e s s C o n t r o l S y s t e m 5

System kontroli dostępu ACCO NET Instrukcja instalacji

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

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

Zarządzanie instancjami EC2

Automatyczna instalacja oraz zmiana konfiguracji w ramach całego klastra.

CVS system kontroli wersji

Bezpieczeństwo IT z Open Source na nowo

VMware vsphere 5.5: Install, Configure, Manage

Asix. Konfiguracja serwera MS SQL dla potrzeb systemu Asix. Pomoc techniczna NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Tworzenie maszyny wirtualnej

Wirtualizacja. Metody, zastosowania, przykłady

Red Hat OpenShift: Platforma do uruchamiania aplikacji działających w kontenerach Docker Jarosław Stakuń Senior Solution Architect, Red Hat CEE

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

SAP BASIS Architektura systemu klient Server

Zadanie1. Wykorzystując serwis internetowy Wikipedii wyjaśnij następujące pojęcia: wirtualizacja, VirtualBox, Vmware, KVM, Virtual PC, Hyper-V.

SERWER AKTUALIZACJI UpServ

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Pracownia specjalistyczna. Numer ćwiczenia: 5.

Administratora CSIZS - OTM

Tworzenie oprogramowania

Opis instalacji i konfiguracji programu HW Virtual Serial Port z kasą PS3000Net

Sprawozdanie z zadania 2. Artur Angiel, śr. 12:15

TCP/IP: Adresy, trasowanie

MikroTik Serwer OpenVPN

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Dokumentacja techniczna

Administracja serwerami

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Praca w środowisku Cygwin. Przygotował Mateusz Dudek

Instalacja NOD32 Remote Administrator

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

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

Samba, instalacja i konfiguracja

SERWER AKTUALIZACJI UpServ

Laboratorium 1: praca przy połączeniach lokalnych wer. 14 z drobnymi modyfikacjami!

Instalacja i konfiguracja SAS PC Files Server

TUTORIAL. Instalacja Ubuntu 9.04 w VirtualBox'ie. Łukasz Grzywacz lgrzywac@gmail.com

Q E M U.

Instrukcja obsługi. Grand IP Camera III. Kamera IP do monitoringu

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Wirtualizacje. Opracowali: Piotr Dąbrowiecki Jakub Gołębiowski Winicjusz Szyszka

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

Messenger. Novell 1.0 WYSZUKIWANIE DOKUMENTACJI PRODUKTU NOVELL MESSENGER. SZYBKI START

Funkcje backendu konfiguratora. Warszawa,

1. System kontroli wersji Instalacja programu kontroli wersji CVS

System kontroli wersji git

Implementowanie zaawansowanej infrastruktury serwerowej Windows Server 2012 R2

Co zostanie wypisane na ekranie? (1)

Instalacja Systemu Linux na maszynie writualnej

cmt + CODESYS, oraz zdalne wejścia/ wyjścia

Instalacja i konfiguracja serwera SSH.

Instrukcja instalacji oprogramowania dla środowiska Linux

Zdalny dostęp SSL. Przewodnik Klienta

Testy penetracyjne Przykłady programów

Kancelaria Prawna.WEB - POMOC

Bezpieczeństwo systemów informatycznych

Tworzenie i obsługa wirtualnego laboratorium komputerowego

NFS jest protokołem zdalnego wywoływania procedur (RPC)

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Migracja serwera Exchange 2003 do wersji Exchange 2010 poradnik

Wprowadzenie do sieciowych systemów operacyjnych. Moduł 1

Serwery LDAP w środowisku produktów w Oracle

PROFESJONALNE SYSTEMY BEZPIECZEŃSTWA

DLA DREAMBOX & FLASHWIZARD

Administratorzy systemów, inżynierowie, konsultanci, którzy wdrażają i zarządzają rozwiązaniami opartymi o serwery HP ProLiant

VMware vsphere: Automation Fast Track

WWQ. Wakacyjne Warsztaty QNAP. Zaczynamy o 11:00. Prowadzący: Łukasz Milic Certyfikowany Trener QNAP

dziennik Instrukcja obsługi

Transkrypt:

kontener aplikacyjny nie tylko dla programistów Łukasz Piątkowski Instytut Informatyki Politechnika Poznańska Koło Naukowe SKiSR Łukasz Piątkowski koło SKiSR 26112014 1 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 2 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 3 / 32

Kontenery a maszyny wirtualne maszyny wirtualne wirtualizacja sprzętu (degradacja wydajności) własny kernel pełna maszyna kontenery chroot na sterydach wspólny kernel własne zasoby pamięci, dysku, I/O Łukasz Piątkowski koło SKiSR 26112014 4 / 32

Kontenery a maszyny wirtualne Łukasz Piątkowski koło SKiSR 26112014 5 / 32

Kontenery LXC (LinuX Containers) obecne standardowo w jądrze Linuxa od wersji 38 wykorzystują przestrzenie nazw jądra przestrzenie pid, net, ipc, mnt, ups mogą mieć własny program init mogą mieć własnego użytkownika root widoczne z poziomu przestrzeni nazw rodzica mogą wykorzystywać mechanizm cgroups pseudo system plików pozwala przypisywać procesy do grup a grupom ustalać limity zasobów systemowych pamięć, CPU, block I/O, CPU pinning niezależne od LXC Łukasz Piątkowski koło SKiSR 26112014 6 / 32

Kontenery LXC (LinuX Containers) obecne standardowo w jądrze Linuxa od wersji 38 wykorzystują przestrzenie nazw jądra przestrzenie pid, net, ipc, mnt, ups mogą mieć własny program init mogą mieć własnego użytkownika root widoczne z poziomu przestrzeni nazw rodzica mogą wykorzystywać mechanizm cgroups pseudo system plików pozwala przypisywać procesy do grup a grupom ustalać limity zasobów systemowych pamięć, CPU, block I/O, CPU pinning niezależne od LXC Łukasz Piątkowski koło SKiSR 26112014 6 / 32

Gdzie jest docker? LXC + cgroups = rozwiązanie! a właściwie nie do końca libcontainer format przechowywania, dystrybucja, izolacja wykonania libchan protokół komunikacyjny oparty o wymianę wiadomości libswarm orkiestracja tworzenie aplikacji składających się z usług Łukasz Piątkowski koło SKiSR 26112014 7 / 32

Gdzie jest docker? LXC + cgroups = rozwiązanie! a właściwie nie do końca libcontainer format przechowywania, dystrybucja, izolacja wykonania libchan protokół komunikacyjny oparty o wymianę wiadomości libswarm orkiestracja tworzenie aplikacji składających się z usług Łukasz Piątkowski koło SKiSR 26112014 7 / 32

Gdzie jest docker? docker to zarządca kontenerów aplikacyjnych opisuje wspólny standard dostarczania i uruchamiania kontenerów kontenery nie muszą mieć procesu init, można uruchomić bezpośrednio proces aplikacji uruchamiający kontener nie musi nic o tej aplikacji wiedzieć niezależnie od użytej dystrybucji niezależnie od wykorzystywanych bibliotek niezależnie od środowisk uruchomieniowych kontener na aplikację/usługę ekosystem: np Docker Hub i znacznie więcej Łukasz Piątkowski koło SKiSR 26112014 8 / 32

Docker kontener aplikacyjny Transport towarów do 1960 r Łukasz Piątkowski koło SKiSR 26112014 9 / 32

Docker kontener aplikacyjny Transport towarów po 1960 r Łukasz Piątkowski koło SKiSR 26112014 10 / 32

Docker kontener aplikacyjny Dostarczanie aplikacji Łukasz Piątkowski koło SKiSR 26112014 11 / 32

Docker kontener aplikacyjny Docker kontener na aplikacje Łukasz Piątkowski koło SKiSR 26112014 12 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 13 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 14 / 32

Wnętrzności libcontainer / LXC / cgroups AUFS czym jest: co daje: unifikujący system plików (ang union FS) pozwala trzymać pewien bazowy stan tylko do odczytu i nakładać na niego indywidualne modyfikacje w momencie ich pojawienia się (ang copy-on-write) możliwość używania bazowych obrazów błyskawiczne tworzenie instancji kontenerów efektywne rozsyłanie obrazów kontenerów Łukasz Piątkowski koło SKiSR 26112014 15 / 32

Wnętrzności libcontainer / LXC / cgroups AUFS czym jest: co daje: unifikujący system plików (ang union FS) pozwala trzymać pewien bazowy stan tylko do odczytu i nakładać na niego indywidualne modyfikacje w momencie ich pojawienia się (ang copy-on-write) możliwość używania bazowych obrazów błyskawiczne tworzenie instancji kontenerów efektywne rozsyłanie obrazów kontenerów Łukasz Piątkowski koło SKiSR 26112014 15 / 32

Funkcjonalność zarządzanie obrazami i kontenerami zdalne repozytorium możliwość pobierania i wysyłania obrazów # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE # docker search ubuntu NAME DESCRIPTION STARS OFFICIAL TRUSTED ubuntu General use Ubuntu base image Tags availa 91 stackbrew/ubuntu Barebone ubuntu images 32 # docker pull ubuntu Pulling repository ubuntu 5ac751e8d623: Downloading [======> 9cc9ea5ea540: Pulling dependent layers 9f676bd305a4: Pulling dependent layers 9cd978db300e: Pulling dependent layers eb601b8965b8: Pulling dependent layers 511136ea3c5a: Download complete 321f7f4200f4: Download complete ] 2272 MB/5808 MB 17s Łukasz Piątkowski koło SKiSR 26112014 16 / 32

Funkcjonalność # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 1310 9f676bd305a4 10 days ago 178 MB ubuntu saucy 9f676bd305a4 10 days ago 178 MB ubuntu raring eb601b8965b8 10 days ago 1665 MB ubuntu 1304 eb601b8965b8 10 days ago 1665 MB ubuntu 1210 5ac751e8d623 10 days ago 161 MB ubuntu quantal 5ac751e8d623 10 days ago 161 MB ubuntu 1004 9cc9ea5ea540 10 days ago 1808 MB ubuntu lucid 9cc9ea5ea540 10 days ago 1808 MB ubuntu 1204 9cd978db300e 10 days ago 2044 MB ubuntu latest 9cd978db300e 10 days ago 2044 MB ubuntu precise 9cd978db300e 10 days ago 2044 MB # docker run -i -t ubuntu:saucy /bin/bash root@f0da55a552c5:/# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=1310 DISTRIB_CODENAME=saucy DISTRIB_DESCRIPTION="Ubuntu 1310" root@f0da55a552c5:/# ip a sh dev eth0 35: eth0: <BROADCAST,UP,LOWER_UP > mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 62:8b:40:69:db:6c brd ff:ff:ff:ff:ff:ff inet 1721702/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::608b:40ff:fe69:db6c/64 scope link valid_lft forever preferred_lft forever Łukasz Piątkowski koło SKiSR 26112014 17 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 18 / 32

Dla programisty dockerfile instrukcja budowania kontenera # Ubuntu 1310 with mono FROM ubuntu:1310 MAINTAINER Lukasz Piatkowski # make sure the package repository is up to date RUN apt-get update ADD build_monosh /tmp/build_monosh RUN chmod 755 /tmp/build_monosh RUN cd /tmp && /build_monosh użycie # docker build -t ubuntu_mono:13:10_323 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE return_cat ubuntu_mono:13:10_323 b4af129c6134 3 days ago 8016 MB # docker push ubuntu_mono:13:10_323 Łukasz Piątkowski koło SKiSR 26112014 19 / 32

Workflow Łukasz Piątkowski koło SKiSR 26112014 20 / 32

Dla programisty prosta integracja z systemami automatycznego budowania plugin dla Jenkins prosta integracja z wszystkim innym funkcjonalność dostępna przez REST API zbuduj raz, uruchom wszędzie 1 proste continuous deployment ujednolicenie środowiska programisty, budowania/testów i uruchomienia na serwerze koniec mniej problemów typu u mnie działa 1 o ile jest Linuxem z jądrem >= 38 Łukasz Piątkowski koło SKiSR 26112014 21 / 32

Dla programisty prosta integracja z systemami automatycznego budowania plugin dla Jenkins prosta integracja z wszystkim innym funkcjonalność dostępna przez REST API zbuduj raz, uruchom wszędzie 1 proste continuous deployment ujednolicenie środowiska programisty, budowania/testów i uruchomienia na serwerze koniec mniej problemów typu u mnie działa 1 o ile jest Linuxem z jądrem >= 38 Łukasz Piątkowski koło SKiSR 26112014 21 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 22 / 32

Dla administratora brak zależności aplikacji na dystrybucję, paczki, biblioteki, izolacja kontenerów kontrola nad zasobami lepsza wydajność lepsze wykorzystanie zasobów Łukasz Piątkowski koło SKiSR 26112014 23 / 32

Obsługa administracyjna zarządzanie obrazami kontenerów (repozytorium) dostarczenie sieci (software bridge L2) # ip link show 1: lo: <LOOPBACK,UP,LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc noqueue state UP mode DEFAULT link/ether fe:71:07:5d:14:52 brd ff:ff:ff:ff:ff:ff 5: vethbbeyi8: <BROADCAST,MULTICAST,UP,LOWER_UP > mtu 1500 qdisc pfifo_fast master docker0 state UP mode DEFAULT qlen 1000 link/ether fe:71:07:5d:14:52 brd ff:ff:ff:ff:ff:ff # brctl show bridge name bridge id STP enabled interfaces docker0 8000fe71075d1452 no vethbbeyi8 port forwarding (L3) mapowanie katalogów gospodarza na katalogi gościa # docker run -t -d -p 9666:9666 -p 8666:8666 -v \ /srv/docker -mydaemon -logs:/srv/mydaemon/logs/:rw \ mydaemon:20140122_115837 Łukasz Piątkowski koło SKiSR 26112014 24 / 32

Połączenia między kontenerami # docker pull ubuntu # docker run -i -t --name ssh --expose 22 ubuntu:1404 /bin/bash root@8bad59172a7a:/# apt-get update && apt-get install openssh -server exit root@8bad59172a7a:/# docker start ssh # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4fd5cf8a6c7e ubuntu:1404 /bin/bash 2 minutes ago Up 7 seconds 22/tcp ssh # docker run -i -t --name client --link ssh:srv ubuntu:1404 /bin/bash root@bd47c5e7e9a3:/# env SRV_PORT=tcp://1721702:22 HOSTNAME=bd47c5e7e9a3 SRV_NAME=/client/srv SRV_PORT_22_TCP_PORT=22 SRV_PORT_22_TCP_PROTO=tcp SRV_PORT_22_TCP_ADDR =1721702 SRV_PORT_22_TCP=tcp://1721702:22 root@bd47c5e7e9a3:/# grep srv /etc/hosts 1721702 srv root@bd47c5e7e9a3:/# exit # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4fd5cf8a6c7e ubuntu:1404 /bin/bash 2 minutes ago Up 7 seconds 22/tcp client/srv,ssh bd47c5e7e9a3 ubuntu:1404 /bin/bash 8 minutes ago Exited (0) client Łukasz Piątkowski koło SKiSR 26112014 25 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 26 / 32

Fig orkiestracja opis usług i ich powiązań ldap: image: ldap -stable:my_app ports: - "389:389" volumes: - /srv/docker -ldap -staging/db:/var/lib/ldap websrv: image: web_service:my_app ports: - "443:8666" volumes: - /var/log/myapp -staging -logs/:/opt/log/ links: - ldap:ldap environment: - INSTANCE_NAME=staging command: /opt/bin/make_me_rich uruchomienie aplikacji: fig up Łukasz Piątkowski koło SKiSR 26112014 27 / 32

Platformy cloud AWS: Amazon EC2 Container Service GCP: Kubernetes i Google Container Engine Microsoft zapowiedział wsparcie dla Dockera w systemach windows (nie, serio) trwa integracja z OpenStack Łukasz Piątkowski koło SKiSR 26112014 28 / 32

W większej skali docker rozwijany jest w stronę systemów cloud Panamax prywatny hosting dockera z web GUI Shipyard mini wwwdotcloudcom docker + zarządzanie maszynami + hipache + panel WWW pipework, weave SDN dla dockera wspiera Open vswitch OpenStack od IceHouse Heat ma wsparcie dla Dockera planowana integracja z Nova CoreOS mini dystrybucja dla klastrów aplikacyjnych automatyczne atomowe aktualizacje systemd + docker + etcd (rozproszona baza Key Value dla wsparcia konfiguracji) Project Atomic dystrybucja wspierana przez Red Hat Łukasz Piątkowski koło SKiSR 26112014 29 / 32

Plan 1 Czym jest docker? 2 Docker bliżej Jak to działa? Dla programisty Dla administratora Szerszy punkt widzenia 3 Podsumowanie Łukasz Piątkowski koło SKiSR 26112014 30 / 32

Podsumowanie Ciekawa opcja na pogodzenie świata programistów i administratorów tak naprawdę system dostarczania aplikacji, który ma szansę zmienić sposób, w jaki aplikacje są tworzone i uruchamiane Prosty dla programisty, prosty dla administratora Ciekawe projekty i możliwości na horyzoncie Otwarte kwestie środowisk rozproszonych: wykonywanie (ECP, Kubernetes), przechowywanie i sieci Łukasz Piątkowski koło SKiSR 26112014 31 / 32

Linki https://wwwdockerio/ https://githubcom/shipyard/shipyard https://coreoscom/ https://githubcom/jpetazzo/pipework https://wikiopenstackorg/wiki/docker http://panamaxio/ Łukasz Piątkowski koło SKiSR 26112014 32 / 32

Dziękuję za uwagę