Docker dla odważnych
... i ciekawskich
Marcin Stożek "Perk"
Cinkciarz.pl
Zielona Góra JUG
grudzień 2015
Plan działania
- Ogólnie
- Architektura
- Ekosystem
- Kontrowersje
Ogólnie
Docker - kto to co to
- http://docker.com
- https://github.com/docker/docker
- Implementuje wysokopoziomowe API do
uruchamiania izolowanych procesów - $ docker run hello-world
Dla kogo ta technologia?
- Programistów
- Pełna kontrola nad bibliotekami systemowymi
- Administratorów
- Łatwe i szybkie odpalenie wielu izolowanych aplikacji
Historia
- 1982 - Unix - chroot
- 2000 - FreeBSD - jail
- 2000 - Linux, Windows - Virtuozzo
- 2001 - Linux - VServer
- 2004 - Solaris - Zones
- 2004 - Windows - Sandboxie
- 2005 - Linux - OpenVZ
- 2007 - AIX, HP-UX
- 2008 - Linux - LXC
- 2013 - Linux - Docker
Odkrywamy koło na nowo :)
Wiki: Operating system level virtualization
Kontenery
Korzystają z Linuksa (ale już niedługo)
Wirtualizacja
Różne systemy (Windows, Linux) i architektury (32/64 bity)
Obrazki: docker.com/what-docker
Dokumentacja
- Jest świetna
- Zawiera tutorial :]
- Oraz wykaz podstawowych komend
- https://docs.docker.com/
Architektura
Daemon
Daemon uruchomiony jest na maszynie "hoście".
- Linux - aktualnie najbardziej wspierany
- Windows - dostępne od Windows Server 2016
- Mac - dostępny poprzez... wirtualizację :]
Client
Aplikacja CLI o nazwie 'docker' - napisana w Go.
- Podstawowy interfejs użytkownika.
- Binarki dla Linuksa, Maca i Windowsa.
Źródło: docker.com/what-docker
Obrazy
- $ docker images
- Obraz to szablon dla kontenera
- Tylko do odczytu
- Mieszkają w lokalnym cache...
- ... albo w rejestrze
- Można tworzyć swoje obrazy
lub bazować na już istniejących
Obrazy - Dockerfile
- Dockerfile to przepis na obraz
- przykładowo taki z Javą w środku
- przykładowo taki z Javą w środku
- UnionFS - każda komenda tworzy warstwę
- $ docker images -a
- /var/lib/docker/aufs
- tree /var/lib/docker/aufs/diff/... | less
Rejestry
- Dom dla obrazów (oprócz lokalnego cache)
- Oficjalny: hub.docker.com
- dużo oficjalnych, gotowych do użycia obrazów
- publiczne obrazy za darmo
- $ docker pull busybox
- Własny: docs.docker.com/registry
- kontrolujemy dostęp do naszych aplikacji
- nikt nam nie skasuje obrazu, nawet my (póki co)
Kontenery
Kontenery vs pliki
- Pliki mogą być zapisane w kontenerze
- $ docker rm container_id - logi, pa pa
-
Data Volumes
- Utrzymują dane nawet jeżeli kontener nie istnieje
- Można zmapować zewnętrzny folder
-
Data Volume Containers
- data-only container pattern
- --volumes-from container_id
Czas na powtórkę
- Uruchamiamy Redisa
Bezpieczeństwo
- Dostęp do Dockera = dostęp do roota
- czyli wszyscy w grupie docker
- Dostęp do Dockera = dostęp do roota
- wspominałem już o tym?
- Temat rzeka :]
- Docker Bench Security
- Dostęp do Dockera = dostęp do roota
Ekosystem
Zarządzanie kontenerami
- Jeden kontener łatwo odpalić, a 2000?
- A na wielu komputerach?
- A gdy nie interesuje mnie na którym dokładnie serwerze kontenery działają?
- A co, gdy w ogóle nie interesuje mnie "system" i chcę tylko odpalić kontener?
- I najlepiej, żeby wszystko mogło się ze sobą komunikować bez mojej ingerencji
Ze stajni Dockera
-
Docker Compose
- aplikacje wielokontenerowe
-
Docker Swarm
- klastrowanie, rozproszony Daemon
-
Docker Machine
- wirtualna maszyna z Dockerem
Inne rozwiązania
- CoreOS
- Kubernetes
- PaaS
- Dokku, Deis, ...
- tutum.co, scalingo.com, Amazon ECS
- ...
- awesome-docker
Kontrowersje
Haters gonna hate, but...
- Nietrudno je znaleźć
- Główne zarzuty:
- debug
- deployment
- sieć IPv4
- bezpieczeństwo (m.in. HUB)
Pytania
Dziękuję za uwagę!
Marcin Stożek "Perk" / @marcinstozek
Docker dla odważnych
By Marcin Stożek
Docker dla odważnych
- 4,156