docker dla początkujących · 2019-11-19 · - docker machine - automatyzuje instalację dockera...
TRANSCRIPT
![Page 1: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/1.jpg)
Konrad Rzentarzewski
Solutions ArchitectLinux Polska Sp. z o.o.
Docker dla początkującychWebinar, 20 lipca 2016Start: 12:00
![Page 2: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/2.jpg)
Komponenty Docker:
- Docker Engine
- Docker Hub
- Docker Machine
- Docker Swarm
- Docker Compose
- niezależne narzędzia (otwarte API)
Czym jest docker?Docker to platforma służąca tworzeniu, dostarczaniu oraz uruchamianiu aplikacji w zwirtualizowanym środowisku kontenerów.
![Page 3: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/3.jpg)
Problemy:
- powolne wdrażanie
- olbrzymie koszta
- zmarnowane zasoby
- trudne w skalowaniu
- trudne w migracji
- często występujący vendor lock-in
Historia: sam metal
![Page 4: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/4.jpg)
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
![Page 5: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/5.jpg)
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
![Page 6: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/6.jpg)
Teraz: kontenery
- Każda instancja gościa jest nazywana kontenerem
- Każdy kontener posiada:
- system plików (rootfs)
- procesy
- pamięć
- urządzenia
- porty sieciowe
Wirtualizacja oparta o kontenery używa kernela systemu operacyjnego hosta do uruchamiania wielu instancji aplikacji gości.
![Page 7: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/7.jpg)
Teraz: kontenery
- Każda instancja gościa jest nazywana kontenerem
- Każdy kontener posiada:
- system plików (rootfs)
- procesy
- pamięć
- urządzenia
- porty sieciowe
Wirtualizacja oparta o kontenery używa kernela systemu operacyjnego hosta do uruchamiania wielu instancji aplikacji gości.
![Page 8: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/8.jpg)
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ść
![Page 9: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/9.jpg)
Komponenty: kerneli 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ę
![Page 10: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/10.jpg)
Demo: instalacja
![Page 11: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/11.jpg)
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)
![Page 12: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/12.jpg)
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)
![Page 13: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/13.jpg)
Wersje dockera
- Szybko rozwijany
- Nowe funkcjonalności
- Wersja klienta i serwera powinny być zgodne
![Page 14: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/14.jpg)
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)
![Page 15: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/15.jpg)
Docker Hub
Docker Hub to publiczny rejestr zawierający dużą liczbę gotowych do użycia obrazów.
![Page 16: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/16.jpg)
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
![Page 17: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/17.jpg)
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ść
![Page 18: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/18.jpg)
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ść
![Page 19: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/19.jpg)
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)
![Page 20: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/20.jpg)
Obrazy
- Gotowe do użycia
- Znajdują się w wielu repozytoriach
![Page 21: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/21.jpg)
Demo: Docker Hub
![Page 22: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/22.jpg)
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)
![Page 23: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/23.jpg)
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
![Page 24: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/24.jpg)
Tworzenie kontenerów
- Komenda: docker run
- Składnia:
- docker run [opcje] [obraz] [komenda] [argumenty]
- Przykład:
- docker run ubuntu:14.04 echo “Hello world”
![Page 25: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/25.jpg)
Demo: docker run
![Page 26: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/26.jpg)
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
![Page 27: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/27.jpg)
Demo: terminal
![Page 28: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/28.jpg)
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
![Page 29: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/29.jpg)
Demo: procesy
![Page 30: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/30.jpg)
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 inspect
- Używaj docker ps, aby znajdować kontenery
- docker ps -a, aby znajdować zatrzymane kontenery
![Page 31: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/31.jpg)
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
![Page 32: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/32.jpg)
Demo: w tle
![Page 33: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/33.jpg)
Praktyczny kontener
- Uruchamiamy aplikację www w kontenerze
- Flaga -P pozwala nam zamapować port sieciowy
- Przykład: docker run -d -P tomcat:7
Czas uruchomić coś, co będzie choć w minimalnym stopniu przydatne - np. udostępni usługę sieciową!
![Page 34: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/34.jpg)
Demo: praktycznie
![Page 35: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/35.jpg)
Demo: praktycznie
![Page 36: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/36.jpg)
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
![Page 37: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/37.jpg)
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
![Page 38: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/38.jpg)
Demo: docker commit
![Page 39: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/39.jpg)
Dockerfile
- 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
Dockerfile to plik konfiguracyjny zawierający instrukcje potrzebne do budowy obrazu.
![Page 40: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/40.jpg)
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
![Page 41: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/41.jpg)
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
![Page 42: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/42.jpg)
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 .
![Page 43: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/43.jpg)
Demo: docker build
![Page 44: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/44.jpg)
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]
![Page 45: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/45.jpg)
Demo: docker build
![Page 46: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/46.jpg)
Dockerfile ENTRYPOINT
- 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
CMD i ENTRYPOINT to nie to samo!
![Page 47: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/47.jpg)
Demo: docker build
![Page 48: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/48.jpg)
Startowaniei zatrzymywanie
- Znajdź kontener po ID lub nazwie: docker ps
- docker start [ID]
- docker stop [ID]
![Page 49: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/49.jpg)
Demo: start/stop
![Page 50: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/50.jpg)
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 exit lub logout nie zatrzyma
kontenera
![Page 51: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/51.jpg)
Demo: docker exec
![Page 52: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/52.jpg)
Usuwanie kontenerów
- Można usuwać tylko zatrzymane kontenery
- docker rm
- Należy podać nazwę lub ID
![Page 53: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/53.jpg)
Demo: docker rm
![Page 54: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/54.jpg)
Usuwanielokalnych 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
![Page 55: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/55.jpg)
Demo: docker rmi
![Page 56: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/56.jpg)
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]
![Page 57: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/57.jpg)
Demo: repozytoria
![Page 58: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/58.jpg)
Demo: repozytoria
![Page 59: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/59.jpg)
Wolumeny
- 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 /)
Wolumen to określony katalog w kontenerze, który zostaje przeznaczony na przechowywanie danych trwałych, niezależnie od cyklu życia konteneru.
![Page 60: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/60.jpg)
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” ]
![Page 61: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/61.jpg)
Zastosowanie wolumenów
- Oddzielenie danych od procesu je tworzącego
- Współdzielenie danych pomiędzy kontenerami
![Page 62: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/62.jpg)
Demo: wolumeny
![Page 63: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/63.jpg)
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 dla portów
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
![Page 64: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/64.jpg)
Demo: mapowanie portów
![Page 65: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/65.jpg)
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;” ]
![Page 66: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/66.jpg)
Linkowanie kontenerów
- 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 jest to proces umożliwiający wymianę danych pomiędzy kontenerami.
![Page 67: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/67.jpg)
Linkowanie kontenerów
- 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
Linkowanie jest to proces umożliwiający wymianę danych pomiędzy kontenerami.
![Page 68: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/68.jpg)
Demo: linkowanie
![Page 69: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/69.jpg)
Docker w procesieContinous 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
![Page 70: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/70.jpg)
Demo: CI
![Page 71: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/71.jpg)
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 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 Universal Control Plane
Subskrypcja Docker Datacenter
FREE TRIALbit.ly/ucpdemo
![Page 72: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/72.jpg)
Docker: easy and fun!
curl https://get.docker.com/ | sh
![Page 73: Docker dla początkujących · 2019-11-19 · - Docker Machine - automatyzuje instalację dockera na systemie hosta - Docker Swarm - łączy wiele Docker Engine w klaster - dystrybuuje](https://reader033.vdocuments.site/reader033/viewer/2022042219/5ec55e255928c65b11005de2/html5/thumbnails/73.jpg)
Konrad Rzentarzewski
Solutions ArchitectLinux Polska Sp. z o.o.
W przypadku dodatkowych pytań zachęcam do kontaktu emailowego.