SlideShare a Scribd company logo
1 of 71
Download to read offline
Docker
Praktyczne podstawy
Warszawa, 13.01.2017
O mnie
Piotr Starobrat
●
Architekt, programista
●
7 lat w branży IT
●
2 lata pracy z Dockerem
LinkedIn: Piotr Starobrat
2
Agenda
1) Organizacja warsztatu.
2) Instalacja i konfiguracja Dockera.
3) Docker – kilka definicji.
4) Czym jest Docker? Dlaczego go używać?
5) Kontenery – koncepcja, uruchamianie, usługi.
6) Wolumeny.
7) Obrazy kontenerów – definiowanie, tworzenie, zarządzanie.
8) Komunikacja pomiędzy kontenerami i światem zewnętrznym.
9) Docker Compose.
10) Retrospekcja.
11) Dyskusja.
3
Organizacja warsztatu
▪ Warsztat - wykłady przeplatane dużą ilością
ćwiczeń
▪ Po każdym ćwiczeniu pokazuję rozwiązanie
▪ Ściśle ustalony harmonogram
▪ Przerwy co około 1 – 1,5h
▪ Lunch około 13:00
▪ Pytania – w trakcie
▪ Ankiety pod koniec warsztatu
4
Instalacja - wersje
▪ Darmowa wersja Community Edition
▪ Płatna wersja Enterprise Edition
▪ Natywna instalacja na dystrybujcach Linuxa
– CentOS, RHEL, Fedora, Ubuntu, ...
▪ Mac OS X korzysta z HyperKit VM
▪ Windows korzysta z Hyper-V
▪ Wsparcie dla Azure
▪ Wsparcie dla AWS
5
Czym jest kontener?
▪ Kompletna paczka zawierająca:
– Uruchomione procesy
– Aplikację
– Biblioteki
– Konfigurację środowiska
uruchomieniowego
– Zasoby
▪ Kontener jest odizolowany
6
7
Źródło: https://www.docker.com/what-container
Czym jest obraz kontenera?
▪ Cała zawartość dyskowa potrzebna do
uruchomienia kontenera.
▪ Zrzut, ‘snapshot’ kontenera
▪ Obraz w Dockerze ma historię
8
Obraz a kontener
▪ Uruchomienie obrazu tworzy kontener
– Do obrazu jest dodane środowisko
uruchomieniowe – pamięć, CPU
– Do obrazu są dodane procesy
▪ Zapisanie kontenera tworzy/aktualizuje obraz
9
Po co korzystać z Dockera?
▪ Prostota przygotowania złożonego środowiska od podstaw
▪ Łatwość dostarczenia aplikacji wraz z zależnościami
▪ Uproszczone wdrożenia
▪ Kontrola zużycia zasobów
▪ Izolacja od hosta oraz innych kontenerów
▪ Niewielki narzut zużycia zasobów
▪ Mikroserwisy
10
Ćwiczenie 1 – 5 minut
1) Uruchomić VirtualBox
2) Połączyć się po ssh (root/password)
3) Sprawdzić wersję Dockera
4) Sprawdzić listę dostępnych obrazów
11
docker --version
docker images
Uruchamianie kontenerów
Pomoc
1) Wyświetlenie opisu komendy
2) Wyświetlenie szczegółów obiektu, np. kontenera
3) Dokumentacja:
https://docs.docker.com/
12
docker help KOMENDA
docker inspect NAZWA lub HASH
Uruchamianie kontenerów
Uruchomienie POLECENIA wewnątrz kontenera:
Kontener działa tak długo, jak długo działa POLECENIE!
Obraz może definiować domyślne polecenie.
Przykład:
13
docker run [--name=NAZWA] OBRAZ [POLECENIE]
docker run centos echo "Pierwszy kontener"
Uruchamianie kontenerów
Wyświetlenie aktywnych kontenerów:
Wyświetlenie wszystkich kontenerów:
14
docker ps
docker ps -a
Uruchamianie kontenerów
Uruchomienie kontenera w tle:
Podłączenie stdin, stdout do kontenera:
15
docker run --detached ...
docker attach KONTENER
docker exec -it KONTENER bash
Uruchamianie kontenerów
Dobre praktyki:
1) Jeden kontener – jedno zadanie
2) Uruchomienie kontenera powinno zajmować jak najmniej
czasu – większość konfiguracji w obrazie
3) Usługa uruchomiona w kontenerze powinna zapewnić
obsługę sygnałów („docker stop” wysyła SIGTERM)
4) Współdzielone dane w wolumenach
16
Ćwiczenie 2 – 10 minut
1) Uruchomić kontener z obrazu centos
2) Kontener o nazwie „hello-container”
3) Kontener ma wyświetlić „Hello Container””
4) Sprawdzić, czy kontener jest aktywny
17
Uruchamianie kontenerów
Kopiowanie plików do kontenera
Kopiowanie plików z kontenera
18
docker cp PLIK KONTENER:MIEJSCE_DOCELOWE
docker cp KONTENER:PLIK MIEJSCE_DOCELOWE
Uruchamianie usług w
kontenerach
Wariant 1 – polecany
1) Utworzyć plik sterujący wywołaniem – uruchamiający usługi
i kontrolujący stan
2) Plik sterujący nie może się kończyć przez zakończeniem
aplikacji
3) Wywołać plik sterujący jako KOMENDĘ dla kontenera
19
Uruchamianie usług w
kontenerach
Wariant 2
Warunki konieczne wyboru wariantu:
1) Pewność, że uruchamiany program się nie kończy.
2) Pewność, że program obsługuje sygnały.
Program jest KOMENDĄ polecenia docker run, np.
20
docker run -d … … … mysql:5.7 mysqld
Uruchamianie usług w
kontenerach
Wariant 3
1) Uruchomić kontener z nieskończonym procesem, np.
2) Uruchomić program
21
docker run -dt OBRAZ tail -f /dev/null
docker exec KONTENER KOMENDA
Uruchamianie usług w
kontenerach
Wariant 4
1) Wykorzystać narzędzie do zarządzania procesami
2) Przykład - supervisord
22
Uruchamianie usług w
kontenerach
Zatrzymanie kontenera
Proces wewnątrz kontenera otrzyma sygnał SIGTERM, a po
określonym czasie SIGKILL.
Alternatywa – zatrzymanie głównego procesu
uruchomionego w kontenerze
23
docker stop KONTENER
Usunięcie kontenera
Kontener musi być zatrzymany, żeby można go było
usunąć.
24
docker rm KONTENER
Ćwiczenie 3 – 20 minut
Uruchomić serwer www Apache Http
UWAGA – polecenie docker run musi mieć dodatkowy argument:
Wykorzystać obraz „centos” - ma zainstalowany httpd
Polecenie uruchamiające usługę – httpd
Polecam wariant 3
Wynik – wyświetlona strona http://localhost:8080/
Dodatkowe zadanie: umieścić plik ~/index.html w
kontenerze w lokalizacji /var/www/html
25
docker run -p 8080:80 ...
Kontenery – zasoby i pamięć
Proces w kontenerze może spowodować „Out of Memory
Error” hosta!
Ustawienie limitu pamięci dla kontenera:
Jednostkę ustawiamy jako:
b, k, m, g
26
docker run --memory=”10m” ...
Kontenery – zasoby i pamięć
Proces wewnątrz kontenera może wykorzystać cały czas
procesora
Ograniczenie przydzielonego czasu procesora:
Liczba określa ile rdzeni ma zostać przydzielone
27
docker run --cpus=”0.5” …
Ćwiczenie 4 – 15 minut
1) Uruchomić kontener w trybie interaktywnym
2) Uruchomić test obciążenia
3) Zamknąć kontener, uruchomić ponownie:
4) Z ograniczeniem 100MB pamięci
5) Z ograniczeniem 0.2 CPU
6) Obserwować zużycie zasobów w top
28
stress --cpu 2 --vm 1 --vm-bytes 1G --timeout 120s &
Storage driver
●
Mechanizm zarządzania danymi wewnątrz kontenerów i
obrazów
●
Dostępnych jest kilka implementacji, w zależności od wersji
Dockera oraz systemu operacyjnego hosta
●
Docker przedstawia posortowaną listę rekomendowanych
implementacji:
Select a storage driver
29
Wolumeny
Dane wewnątrz kontenerów są zarządzane przez Docker
Dane współdzielone/trwałe powinny być zarządzane
bezpośrednio przez system plików hosta
▪ Wydajność (storage driver)
▪ Przenaszalność
▪ Współdzielenie
▪ Bezpieczeństwo
30
Wolumeny
Niejawny wolumen.
Katalog „KATALOG” w kontenerze jest wolumenem:
Jawny, nazwany wolumen
31
docker run -v KATALOG ...
docker run -v KATALOG_HOSTA:KATALOG_KONTENERA ...
Ćwiczenie 5 – 15 minut
Uruchomić serwer www Apache Http.
Kontener powinien mieć jawny wolumen wskazujący na
katalog:
- /var/www/html
Przenieść plik index.html do wolumenu
Zmodyfikować plik index.html i sprawdzić efekt.
32
Obrazy kontenerów
Polecenie wyświetlające listę lokalnie dostępnych obrazów:
Tworząc kontener, Docker najpierw szuka obrazu lokalnie
33
docker images
Obrazy kontenerów
Jeśli obraz nie jest dostępny lokalnie, Docker szuka obrazu
w repozytorum DockerHub
https://hub.docker.com/
Manualne pobranie obrazu:
34
docker pull NAZWA_OBRAZU
Obrazy kontenerów
Utworzenie obrazu z kontenera:
35
docker commit KONTENER OBRAZ[:TAG]
Obrazy kontenerów
Bezpośredni eksport kontenera do pliku
Eksport obrazu do pliku
36
docker export KONTENER > PLIK.tar
docker save OBRAZ > PLIK.tar
Obrazy kontenerów
Wczytanie pliku i utworzenie z niego obrazu systemu:
Wczytanie obrazu Docker
37
docker import PLIK.tar
docker load -i PLIK.tar
Ćwiczenie 6 – 10 minut
1) Zapisać stan kontenera jako obraz o nazwie httpd:warsztat
2) Wyeksportować powyższy obraz do pliku
3) Usunąć obraz httpd poleceniem:
4) Wczytać obraz z pliku
Podpowiedź:
Nie można usunąć obrazu, jeśli istnieją uruchomione z
niego kontenery.
38
docker rmi OBRAZ
Dockerfile
Dockerfile - plik zawierający definicję obrazu
1) Obraz źródłowy
2) Lista komend do wykonania podczas tworzenia obrazu
3) Komendy do automatycznego uruchomienia
4) Udostępnione porty
5) Wolumeny danych
39
Dockerfile - uruchomienie
Uruchomienie w katalogu z plikiem „Dockerfile”
Zazwyczaj kontekst to aktualny katalog
Kontekst – tylko niezbędna zawartość!
40
docker build KONTEKST
docker build .
Dockerfile - składnia
Określenie obrazu bazowego
41
FROM OBRAZ[:TAG] [AS NAZWA]
Dockerfile - składnia
Polecenie uruchamiające komendy w trakcie tworzenia
obrazu
42
RUN KOMENDA
RUN ["KOMENDA", "PARAM1", "PARAM2"]
Dockerfile - składnia
Domyślne polecenie które zostanie uruchomione podczas
tworzenia kontenera:
Tylko ostatnie polecenie jest efektywne!
43
CMD KOMENDA
CMD ["KOMENDA", "PARAM1", "PARAM2"]
Dockerfile - składnia
Ustawienie zmiennych środowiskowych
44
ENV NAZWA WARTOSC
ENV NAZWA1=WARTOSC1 NAZWA2=WARTOSC2
Dockerfile - składnia
Kopiowanie pliku z kontekstu do kontenera
Zmiana katalogu dla kolejnych poleceń
45
COPY CO_SKOPIOWAĆ MIEJSCE_DOCELOWE
WORKDIR /katalog
Dockerfile - składnia
Wymuszenie utworzenia wolumenu dla kontenera:
46
VOLUME /myvol
VOLUME [„/myvol”]
Dockerfile - oficjalny przykład
Źródło: Docker Labs - NodeJS application
47
FROM node:4.4.5
COPY . /app
WORKDIR /app
RUN npm install
CMD ["npm","start"]
Ćwiczenie 7 – 30 minut
1) Stworzyć Dockerfile dla MongoDB
2) Stworzyć obraz z MongoDB
3) Uruchomić kontener z MongoDB
4) Wykorzystać obraz centos
5) Plik z binariami dla MongoDB:
/root/mongodb-linux-x86_64-3.4.10.tgz
Dokumentacja instalacji MongoDB
48
Ćwiczenie 7 – 30 minut
Mongodb – części składowe
Uruchomienie serwera:
Uruchomienie Mongo Shell
49
mongod
mongo
Ćwiczenie 7 – 30 minut
Użyć obrazu centos
1) Skopiować i rozpakować binaria MongoDB
2) Dodać lokalizację binariów do zmiennej PATH
3) Utworzyć volumen /data/db
4) Uruchomić kontener w trybie interaktywnym
5) Uruchomić serwer MongoDB w tle - „mongod &”
6) Uruchomić konsolę MongoDB - „mongo”
7) W konsoli wpisać „db”, co zweryfikuje połączenie
50
Komunikacja ze światem
zewnętrznym
Udostępnienie i mapowanie portów
Możliwość podania zakresu, np.
Dockerfile - polecenie EXPOSE – tylko jako dokumentacja!
51
docker run -p [IP]:[PORT_HOSTA]:PORT_KONTENERA …
docker run -p 8080-8090:8080-8090
Ćwiczenie 8 – 10 minut
Uruchomić kontener MongoDB o nazwie „mongo_server”
z wystawionym portem domyślnym: 27017.
Połączyć się do MongoDB z hosta.
Mongo Shell jest zainstalowane na hoście.
52
Komunikacja kontenerów
Stare podejście – linki
Link pomiędzy kontenerami pozwala na komunikację
sieciową korzystając z nazwy kontenera jako nazwy
sieciowej
Utworzenie linku
53
docker run --link INNY_KONTENER:ALIAS ...
Komunikacja kontenerów
Nowe podejście – Docker networks
●
Wykorzystanie niezależnych sieci
●
Kontenery można podłączać do sieci
●
Wiele kontenerów podłączonych do wielu sieci
●
Kontenery komunikują się korzystając ze swoich nazw
54
Komunikacja kontenerów
Nowe podejście – Docker networks
Wszystkie kontenery podpięte do jednej sieci mogą się
komunikować
●
Kontenery można podłączać do sieci
●
Trzy sieci dostępne automatycznie:
– bridge - domyślna
– none – brak zdefiniowanej komunikacji
– host – współdzielenie sieci z hostem
55
Komunikacja kontenerów
Wyświetlenie listy sieci
Utworzenie sieci
56
docker network ls
docker network create --driver bridge NAZWA
Komunikacja kontenerów
Podłączenie działającego kontenera do sieci
Podłączenie do sieci podczas tworzenia kontenera
57
docker network connect SIEĆ KONTENER
docker run --network=SIEĆ ...
Ćwiczenie 9 – 15 minut
1) Utworzyć nową sieć o nazwie „mongo”
2) Podłączyć kontener mongo_server do sieci
3) Uruchomić nowy kontener (klienta) podłączony do sieci.
4) Kontener (klienta) w trybie interaktywnym.
5) Połączyć się z serwerem:
58
mongo mongo_server:27017
Docker Compose
●
Dockerfile - tworzenie pojedynczego obrazu
●
Docker compose – uruchomienie wielu kontenerów
●
Komenda CLI „docker-compose”
●
Konfiguracja za pomocą pliku „docker-compose.yml”
59
Docker Compose
Polecenia najlepiej wykonywać w katalogu z plikiem yml.
Uruchomienie
Zatrzymanie
60
docker-compose up
docker-compose down
Docker Compose
Elementy definiowane w pliku konfiguracyjnym:
●
services – usługi, kontenery które mają być uruchomione
●
networks – sieci, które mają być utworzone
●
volumes - wolumeny, które mają być utworzone
Specyfikacja
https://docs.docker.com/compose/compose-file/
61
Docker Compose
Services – definicja kontenerów.
62
services:
NAZWA1:
build: LOKALIZACJA DOCKERFILE
[image: NAZWA OBRAZU]
ports:
- "PORT HOSTA:PORT KONTENERA"
volumes:
- MIEJSCE ŹRÓDŁOWE:MIEJSCE DOCELOWE
networks:
- NAZWA_SIECI
Docker Compose
●
Domyślnie tworzona jest sieć „myapp_default”
●
Domyślnie kontenery są podłączane do powyższej sieci
63
networks:
NOWA_SIEĆ:
driver: bridge
ISTNIEJĄCA_SIEĆ:
external:
name: wcześniej-utworzona-sieć
Ćwiczenie 10 – 40 minut
Za pomocą Compose uruchomić mysql i wordpress.
Najlepiej korzystać z dokumentacji docker-compose
Wykorzystać dostępne obrazy:
●
mysql:5.7
●
Wordpress
Dodatkowo – zainstalować phpmyadmin.
64
Retrospekcja
1) Instalacja i konfiguracja Dockera.
2) Docker – kilka definicji.
3) Czym jest Docker? Dlaczego go używać?
4) Kontenery – koncepcja, uruchamianie, usługi.
5) Wolumeny.
6) Obrazy kontenerów – definiowanie, tworzenie, zarządzanie.
7) Komunikacja pomiędzy kontenerami i światem zewnętrznym.
8) Docker Compose.
9) Dyskusja.
65
Ankieta online
66
https://goo.gl/MGkMyy
Szkolenie dedykowane dla Ciebie
67
Interesuje Cię tematyka warsztatu?
Zapoznaj się z programem szkolenia Sages:
• Wprowadzenie do technologii Docker
Dla uczestników dzisiejszego warsztatu zniżka na to
szkolenie w wysokości 35%
Organizator Stacji IT
68
Partnerzy
Dyskusja
1) Docker Swarm
2) Alternatywy dla Dockera
3) Problemy z korzystaniem z kontenerów
4) Docker na inne platformy – ARM
5) Docker a obliczenia na kartach graficznych
6) Bezpieczeństwo
7) Przykłady użycia z mojego doświadczenia
8) Dyskusja.
70
Dziękuję!
71

More Related Content

What's hot

What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
Simplilearn
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
Linaro
 

What's hot (20)

Docker on Docker
Docker on DockerDocker on Docker
Docker on Docker
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
 
MongoDB Backup & Disaster Recovery
MongoDB Backup & Disaster RecoveryMongoDB Backup & Disaster Recovery
MongoDB Backup & Disaster Recovery
 
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
 
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3
 
Azure virtual machines & Terraform
Azure virtual machines  & Terraform Azure virtual machines  & Terraform
Azure virtual machines & Terraform
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit Testing
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQube
 
Performance Testing REST APIs
Performance Testing REST APIsPerformance Testing REST APIs
Performance Testing REST APIs
 
Golang execution modes
Golang execution modesGolang execution modes
Golang execution modes
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
DTW18 - code08 - Everything You Need To Know About Storage with Kubernetes
DTW18 - code08 - Everything You Need To Know About Storage with KubernetesDTW18 - code08 - Everything You Need To Know About Storage with Kubernetes
DTW18 - code08 - Everything You Need To Know About Storage with Kubernetes
 
Ceph Introduction 2017
Ceph Introduction 2017  Ceph Introduction 2017
Ceph Introduction 2017
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
 

Similar to Docker praktyczne podstawy

ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
Kamil Monticolo
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
Wydawnictwo Helion
 

Similar to Docker praktyczne podstawy (20)

Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Docker
DockerDocker
Docker
 
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
Kubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz WoszczynskiKubernetes i Docker Swarm - Tomasz Woszczynski
Kubernetes i Docker Swarm - Tomasz Woszczynski
 
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker ComposePrzenieś się do kontenera, czyli korzyści z Docker i Docker Compose
Przenieś się do kontenera, czyli korzyści z Docker i Docker Compose
 
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
Laravel Poznań Meetup #4 - EloquentSequence - Historia pewnej biblioteki Open...
 
EloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open SourceEloquentSequence - historia pewnej biblioteki Open Source
EloquentSequence - historia pewnej biblioteki Open Source
 
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
Net core (dawniej   5.0) – co to dla mnie. też dużo o open sourceNet core (dawniej   5.0) – co to dla mnie. też dużo o open source
Net core (dawniej 5.0) – co to dla mnie. też dużo o open source
 
ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
 
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
 
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
Kainos Tech Space #1 : DevOps : Artur Senk - Jenkins, najważniejsze narzędzie...
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacychJDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
JDD 2016 - Marcin Stozek - Docker. Przewodnik dla poczatkujacych
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
CruiseControl.rb
CruiseControl.rbCruiseControl.rb
CruiseControl.rb
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be hero
 

More from Sages

Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
Sages
 

More from Sages (20)

Python szybki start
Python   szybki startPython   szybki start
Python szybki start
 
Budowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze AzureBudowanie rozwiązań serverless w chmurze Azure
Budowanie rozwiązań serverless w chmurze Azure
 
Angular 4 pragmatycznie
Angular 4 pragmatycznieAngular 4 pragmatycznie
Angular 4 pragmatycznie
 
Jak działa blockchain?
Jak działa blockchain?Jak działa blockchain?
Jak działa blockchain?
 
Qgis szybki start
Qgis szybki startQgis szybki start
Qgis szybki start
 
Architektura SOA - wstęp
Architektura SOA - wstępArchitektura SOA - wstęp
Architektura SOA - wstęp
 
Bezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach javaBezpieczne dane w aplikacjach java
Bezpieczne dane w aplikacjach java
 
Wprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache HadoopWprowadzenie do technologi Big Data i Apache Hadoop
Wprowadzenie do technologi Big Data i Apache Hadoop
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Technologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT coreTechnologia Xamarin i wprowadzenie do Windows IoT core
Technologia Xamarin i wprowadzenie do Windows IoT core
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
 
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem WekaSzybkie wprowadzenie do eksploracji danych z pakietem Weka
Szybkie wprowadzenie do eksploracji danych z pakietem Weka
 
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?Jak zacząć przetwarzanie małych i dużych danych tekstowych?
Jak zacząć przetwarzanie małych i dużych danych tekstowych?
 
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
 
Wprowadzenie do technologii Puppet
Wprowadzenie do technologii PuppetWprowadzenie do technologii Puppet
Wprowadzenie do technologii Puppet
 
Budowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki startBudowa elementów GUI za pomocą biblioteki React - szybki start
Budowa elementów GUI za pomocą biblioteki React - szybki start
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
 
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data EcosystemWprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
Wprowadzenie do technologii Big Data / Intro to Big Data Ecosystem
 
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash courseCodepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
Codepot - Pig i Hive: szybkie wprowadzenie / Pig and Hive crash course
 
Podstawy AngularJS
Podstawy AngularJSPodstawy AngularJS
Podstawy AngularJS
 

Docker praktyczne podstawy

  • 2. O mnie Piotr Starobrat ● Architekt, programista ● 7 lat w branży IT ● 2 lata pracy z Dockerem LinkedIn: Piotr Starobrat 2
  • 3. Agenda 1) Organizacja warsztatu. 2) Instalacja i konfiguracja Dockera. 3) Docker – kilka definicji. 4) Czym jest Docker? Dlaczego go używać? 5) Kontenery – koncepcja, uruchamianie, usługi. 6) Wolumeny. 7) Obrazy kontenerów – definiowanie, tworzenie, zarządzanie. 8) Komunikacja pomiędzy kontenerami i światem zewnętrznym. 9) Docker Compose. 10) Retrospekcja. 11) Dyskusja. 3
  • 4. Organizacja warsztatu ▪ Warsztat - wykłady przeplatane dużą ilością ćwiczeń ▪ Po każdym ćwiczeniu pokazuję rozwiązanie ▪ Ściśle ustalony harmonogram ▪ Przerwy co około 1 – 1,5h ▪ Lunch około 13:00 ▪ Pytania – w trakcie ▪ Ankiety pod koniec warsztatu 4
  • 5. Instalacja - wersje ▪ Darmowa wersja Community Edition ▪ Płatna wersja Enterprise Edition ▪ Natywna instalacja na dystrybujcach Linuxa – CentOS, RHEL, Fedora, Ubuntu, ... ▪ Mac OS X korzysta z HyperKit VM ▪ Windows korzysta z Hyper-V ▪ Wsparcie dla Azure ▪ Wsparcie dla AWS 5
  • 6. Czym jest kontener? ▪ Kompletna paczka zawierająca: – Uruchomione procesy – Aplikację – Biblioteki – Konfigurację środowiska uruchomieniowego – Zasoby ▪ Kontener jest odizolowany 6
  • 8. Czym jest obraz kontenera? ▪ Cała zawartość dyskowa potrzebna do uruchomienia kontenera. ▪ Zrzut, ‘snapshot’ kontenera ▪ Obraz w Dockerze ma historię 8
  • 9. Obraz a kontener ▪ Uruchomienie obrazu tworzy kontener – Do obrazu jest dodane środowisko uruchomieniowe – pamięć, CPU – Do obrazu są dodane procesy ▪ Zapisanie kontenera tworzy/aktualizuje obraz 9
  • 10. Po co korzystać z Dockera? ▪ Prostota przygotowania złożonego środowiska od podstaw ▪ Łatwość dostarczenia aplikacji wraz z zależnościami ▪ Uproszczone wdrożenia ▪ Kontrola zużycia zasobów ▪ Izolacja od hosta oraz innych kontenerów ▪ Niewielki narzut zużycia zasobów ▪ Mikroserwisy 10
  • 11. Ćwiczenie 1 – 5 minut 1) Uruchomić VirtualBox 2) Połączyć się po ssh (root/password) 3) Sprawdzić wersję Dockera 4) Sprawdzić listę dostępnych obrazów 11 docker --version docker images
  • 12. Uruchamianie kontenerów Pomoc 1) Wyświetlenie opisu komendy 2) Wyświetlenie szczegółów obiektu, np. kontenera 3) Dokumentacja: https://docs.docker.com/ 12 docker help KOMENDA docker inspect NAZWA lub HASH
  • 13. Uruchamianie kontenerów Uruchomienie POLECENIA wewnątrz kontenera: Kontener działa tak długo, jak długo działa POLECENIE! Obraz może definiować domyślne polecenie. Przykład: 13 docker run [--name=NAZWA] OBRAZ [POLECENIE] docker run centos echo "Pierwszy kontener"
  • 14. Uruchamianie kontenerów Wyświetlenie aktywnych kontenerów: Wyświetlenie wszystkich kontenerów: 14 docker ps docker ps -a
  • 15. Uruchamianie kontenerów Uruchomienie kontenera w tle: Podłączenie stdin, stdout do kontenera: 15 docker run --detached ... docker attach KONTENER docker exec -it KONTENER bash
  • 16. Uruchamianie kontenerów Dobre praktyki: 1) Jeden kontener – jedno zadanie 2) Uruchomienie kontenera powinno zajmować jak najmniej czasu – większość konfiguracji w obrazie 3) Usługa uruchomiona w kontenerze powinna zapewnić obsługę sygnałów („docker stop” wysyła SIGTERM) 4) Współdzielone dane w wolumenach 16
  • 17. Ćwiczenie 2 – 10 minut 1) Uruchomić kontener z obrazu centos 2) Kontener o nazwie „hello-container” 3) Kontener ma wyświetlić „Hello Container”” 4) Sprawdzić, czy kontener jest aktywny 17
  • 18. Uruchamianie kontenerów Kopiowanie plików do kontenera Kopiowanie plików z kontenera 18 docker cp PLIK KONTENER:MIEJSCE_DOCELOWE docker cp KONTENER:PLIK MIEJSCE_DOCELOWE
  • 19. Uruchamianie usług w kontenerach Wariant 1 – polecany 1) Utworzyć plik sterujący wywołaniem – uruchamiający usługi i kontrolujący stan 2) Plik sterujący nie może się kończyć przez zakończeniem aplikacji 3) Wywołać plik sterujący jako KOMENDĘ dla kontenera 19
  • 20. Uruchamianie usług w kontenerach Wariant 2 Warunki konieczne wyboru wariantu: 1) Pewność, że uruchamiany program się nie kończy. 2) Pewność, że program obsługuje sygnały. Program jest KOMENDĄ polecenia docker run, np. 20 docker run -d … … … mysql:5.7 mysqld
  • 21. Uruchamianie usług w kontenerach Wariant 3 1) Uruchomić kontener z nieskończonym procesem, np. 2) Uruchomić program 21 docker run -dt OBRAZ tail -f /dev/null docker exec KONTENER KOMENDA
  • 22. Uruchamianie usług w kontenerach Wariant 4 1) Wykorzystać narzędzie do zarządzania procesami 2) Przykład - supervisord 22
  • 23. Uruchamianie usług w kontenerach Zatrzymanie kontenera Proces wewnątrz kontenera otrzyma sygnał SIGTERM, a po określonym czasie SIGKILL. Alternatywa – zatrzymanie głównego procesu uruchomionego w kontenerze 23 docker stop KONTENER
  • 24. Usunięcie kontenera Kontener musi być zatrzymany, żeby można go było usunąć. 24 docker rm KONTENER
  • 25. Ćwiczenie 3 – 20 minut Uruchomić serwer www Apache Http UWAGA – polecenie docker run musi mieć dodatkowy argument: Wykorzystać obraz „centos” - ma zainstalowany httpd Polecenie uruchamiające usługę – httpd Polecam wariant 3 Wynik – wyświetlona strona http://localhost:8080/ Dodatkowe zadanie: umieścić plik ~/index.html w kontenerze w lokalizacji /var/www/html 25 docker run -p 8080:80 ...
  • 26. Kontenery – zasoby i pamięć Proces w kontenerze może spowodować „Out of Memory Error” hosta! Ustawienie limitu pamięci dla kontenera: Jednostkę ustawiamy jako: b, k, m, g 26 docker run --memory=”10m” ...
  • 27. Kontenery – zasoby i pamięć Proces wewnątrz kontenera może wykorzystać cały czas procesora Ograniczenie przydzielonego czasu procesora: Liczba określa ile rdzeni ma zostać przydzielone 27 docker run --cpus=”0.5” …
  • 28. Ćwiczenie 4 – 15 minut 1) Uruchomić kontener w trybie interaktywnym 2) Uruchomić test obciążenia 3) Zamknąć kontener, uruchomić ponownie: 4) Z ograniczeniem 100MB pamięci 5) Z ograniczeniem 0.2 CPU 6) Obserwować zużycie zasobów w top 28 stress --cpu 2 --vm 1 --vm-bytes 1G --timeout 120s &
  • 29. Storage driver ● Mechanizm zarządzania danymi wewnątrz kontenerów i obrazów ● Dostępnych jest kilka implementacji, w zależności od wersji Dockera oraz systemu operacyjnego hosta ● Docker przedstawia posortowaną listę rekomendowanych implementacji: Select a storage driver 29
  • 30. Wolumeny Dane wewnątrz kontenerów są zarządzane przez Docker Dane współdzielone/trwałe powinny być zarządzane bezpośrednio przez system plików hosta ▪ Wydajność (storage driver) ▪ Przenaszalność ▪ Współdzielenie ▪ Bezpieczeństwo 30
  • 31. Wolumeny Niejawny wolumen. Katalog „KATALOG” w kontenerze jest wolumenem: Jawny, nazwany wolumen 31 docker run -v KATALOG ... docker run -v KATALOG_HOSTA:KATALOG_KONTENERA ...
  • 32. Ćwiczenie 5 – 15 minut Uruchomić serwer www Apache Http. Kontener powinien mieć jawny wolumen wskazujący na katalog: - /var/www/html Przenieść plik index.html do wolumenu Zmodyfikować plik index.html i sprawdzić efekt. 32
  • 33. Obrazy kontenerów Polecenie wyświetlające listę lokalnie dostępnych obrazów: Tworząc kontener, Docker najpierw szuka obrazu lokalnie 33 docker images
  • 34. Obrazy kontenerów Jeśli obraz nie jest dostępny lokalnie, Docker szuka obrazu w repozytorum DockerHub https://hub.docker.com/ Manualne pobranie obrazu: 34 docker pull NAZWA_OBRAZU
  • 35. Obrazy kontenerów Utworzenie obrazu z kontenera: 35 docker commit KONTENER OBRAZ[:TAG]
  • 36. Obrazy kontenerów Bezpośredni eksport kontenera do pliku Eksport obrazu do pliku 36 docker export KONTENER > PLIK.tar docker save OBRAZ > PLIK.tar
  • 37. Obrazy kontenerów Wczytanie pliku i utworzenie z niego obrazu systemu: Wczytanie obrazu Docker 37 docker import PLIK.tar docker load -i PLIK.tar
  • 38. Ćwiczenie 6 – 10 minut 1) Zapisać stan kontenera jako obraz o nazwie httpd:warsztat 2) Wyeksportować powyższy obraz do pliku 3) Usunąć obraz httpd poleceniem: 4) Wczytać obraz z pliku Podpowiedź: Nie można usunąć obrazu, jeśli istnieją uruchomione z niego kontenery. 38 docker rmi OBRAZ
  • 39. Dockerfile Dockerfile - plik zawierający definicję obrazu 1) Obraz źródłowy 2) Lista komend do wykonania podczas tworzenia obrazu 3) Komendy do automatycznego uruchomienia 4) Udostępnione porty 5) Wolumeny danych 39
  • 40. Dockerfile - uruchomienie Uruchomienie w katalogu z plikiem „Dockerfile” Zazwyczaj kontekst to aktualny katalog Kontekst – tylko niezbędna zawartość! 40 docker build KONTEKST docker build .
  • 41. Dockerfile - składnia Określenie obrazu bazowego 41 FROM OBRAZ[:TAG] [AS NAZWA]
  • 42. Dockerfile - składnia Polecenie uruchamiające komendy w trakcie tworzenia obrazu 42 RUN KOMENDA RUN ["KOMENDA", "PARAM1", "PARAM2"]
  • 43. Dockerfile - składnia Domyślne polecenie które zostanie uruchomione podczas tworzenia kontenera: Tylko ostatnie polecenie jest efektywne! 43 CMD KOMENDA CMD ["KOMENDA", "PARAM1", "PARAM2"]
  • 44. Dockerfile - składnia Ustawienie zmiennych środowiskowych 44 ENV NAZWA WARTOSC ENV NAZWA1=WARTOSC1 NAZWA2=WARTOSC2
  • 45. Dockerfile - składnia Kopiowanie pliku z kontekstu do kontenera Zmiana katalogu dla kolejnych poleceń 45 COPY CO_SKOPIOWAĆ MIEJSCE_DOCELOWE WORKDIR /katalog
  • 46. Dockerfile - składnia Wymuszenie utworzenia wolumenu dla kontenera: 46 VOLUME /myvol VOLUME [„/myvol”]
  • 47. Dockerfile - oficjalny przykład Źródło: Docker Labs - NodeJS application 47 FROM node:4.4.5 COPY . /app WORKDIR /app RUN npm install CMD ["npm","start"]
  • 48. Ćwiczenie 7 – 30 minut 1) Stworzyć Dockerfile dla MongoDB 2) Stworzyć obraz z MongoDB 3) Uruchomić kontener z MongoDB 4) Wykorzystać obraz centos 5) Plik z binariami dla MongoDB: /root/mongodb-linux-x86_64-3.4.10.tgz Dokumentacja instalacji MongoDB 48
  • 49. Ćwiczenie 7 – 30 minut Mongodb – części składowe Uruchomienie serwera: Uruchomienie Mongo Shell 49 mongod mongo
  • 50. Ćwiczenie 7 – 30 minut Użyć obrazu centos 1) Skopiować i rozpakować binaria MongoDB 2) Dodać lokalizację binariów do zmiennej PATH 3) Utworzyć volumen /data/db 4) Uruchomić kontener w trybie interaktywnym 5) Uruchomić serwer MongoDB w tle - „mongod &” 6) Uruchomić konsolę MongoDB - „mongo” 7) W konsoli wpisać „db”, co zweryfikuje połączenie 50
  • 51. Komunikacja ze światem zewnętrznym Udostępnienie i mapowanie portów Możliwość podania zakresu, np. Dockerfile - polecenie EXPOSE – tylko jako dokumentacja! 51 docker run -p [IP]:[PORT_HOSTA]:PORT_KONTENERA … docker run -p 8080-8090:8080-8090
  • 52. Ćwiczenie 8 – 10 minut Uruchomić kontener MongoDB o nazwie „mongo_server” z wystawionym portem domyślnym: 27017. Połączyć się do MongoDB z hosta. Mongo Shell jest zainstalowane na hoście. 52
  • 53. Komunikacja kontenerów Stare podejście – linki Link pomiędzy kontenerami pozwala na komunikację sieciową korzystając z nazwy kontenera jako nazwy sieciowej Utworzenie linku 53 docker run --link INNY_KONTENER:ALIAS ...
  • 54. Komunikacja kontenerów Nowe podejście – Docker networks ● Wykorzystanie niezależnych sieci ● Kontenery można podłączać do sieci ● Wiele kontenerów podłączonych do wielu sieci ● Kontenery komunikują się korzystając ze swoich nazw 54
  • 55. Komunikacja kontenerów Nowe podejście – Docker networks Wszystkie kontenery podpięte do jednej sieci mogą się komunikować ● Kontenery można podłączać do sieci ● Trzy sieci dostępne automatycznie: – bridge - domyślna – none – brak zdefiniowanej komunikacji – host – współdzielenie sieci z hostem 55
  • 56. Komunikacja kontenerów Wyświetlenie listy sieci Utworzenie sieci 56 docker network ls docker network create --driver bridge NAZWA
  • 57. Komunikacja kontenerów Podłączenie działającego kontenera do sieci Podłączenie do sieci podczas tworzenia kontenera 57 docker network connect SIEĆ KONTENER docker run --network=SIEĆ ...
  • 58. Ćwiczenie 9 – 15 minut 1) Utworzyć nową sieć o nazwie „mongo” 2) Podłączyć kontener mongo_server do sieci 3) Uruchomić nowy kontener (klienta) podłączony do sieci. 4) Kontener (klienta) w trybie interaktywnym. 5) Połączyć się z serwerem: 58 mongo mongo_server:27017
  • 59. Docker Compose ● Dockerfile - tworzenie pojedynczego obrazu ● Docker compose – uruchomienie wielu kontenerów ● Komenda CLI „docker-compose” ● Konfiguracja za pomocą pliku „docker-compose.yml” 59
  • 60. Docker Compose Polecenia najlepiej wykonywać w katalogu z plikiem yml. Uruchomienie Zatrzymanie 60 docker-compose up docker-compose down
  • 61. Docker Compose Elementy definiowane w pliku konfiguracyjnym: ● services – usługi, kontenery które mają być uruchomione ● networks – sieci, które mają być utworzone ● volumes - wolumeny, które mają być utworzone Specyfikacja https://docs.docker.com/compose/compose-file/ 61
  • 62. Docker Compose Services – definicja kontenerów. 62 services: NAZWA1: build: LOKALIZACJA DOCKERFILE [image: NAZWA OBRAZU] ports: - "PORT HOSTA:PORT KONTENERA" volumes: - MIEJSCE ŹRÓDŁOWE:MIEJSCE DOCELOWE networks: - NAZWA_SIECI
  • 63. Docker Compose ● Domyślnie tworzona jest sieć „myapp_default” ● Domyślnie kontenery są podłączane do powyższej sieci 63 networks: NOWA_SIEĆ: driver: bridge ISTNIEJĄCA_SIEĆ: external: name: wcześniej-utworzona-sieć
  • 64. Ćwiczenie 10 – 40 minut Za pomocą Compose uruchomić mysql i wordpress. Najlepiej korzystać z dokumentacji docker-compose Wykorzystać dostępne obrazy: ● mysql:5.7 ● Wordpress Dodatkowo – zainstalować phpmyadmin. 64
  • 65. Retrospekcja 1) Instalacja i konfiguracja Dockera. 2) Docker – kilka definicji. 3) Czym jest Docker? Dlaczego go używać? 4) Kontenery – koncepcja, uruchamianie, usługi. 5) Wolumeny. 6) Obrazy kontenerów – definiowanie, tworzenie, zarządzanie. 7) Komunikacja pomiędzy kontenerami i światem zewnętrznym. 8) Docker Compose. 9) Dyskusja. 65
  • 67. Szkolenie dedykowane dla Ciebie 67 Interesuje Cię tematyka warsztatu? Zapoznaj się z programem szkolenia Sages: • Wprowadzenie do technologii Docker Dla uczestników dzisiejszego warsztatu zniżka na to szkolenie w wysokości 35%
  • 70. Dyskusja 1) Docker Swarm 2) Alternatywy dla Dockera 3) Problemy z korzystaniem z kontenerów 4) Docker na inne platformy – ARM 5) Docker a obliczenia na kartach graficznych 6) Bezpieczeństwo 7) Przykłady użycia z mojego doświadczenia 8) Dyskusja. 70