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

Kontenery

Korzystają z Linuksa (ale już niedługo)

 

Wirtualizacja

Różne systemy (Windows, Linux) i architektury (32/64 bity)

Dokumentacja

Architektura

Daemon

Daemon uruchomiony jest na maszynie "hoście".

 

Client

Aplikacja CLI o nazwie 'docker' - napisana w Go.

 

  • Podstawowy interfejs użytkownika.
  • Binarki dla Linuksa, Maca i Windowsa.

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
  • UnionFS - każda komenda tworzy warstwę
    • $ docker images -a
    • /var/lib/docker/aufs
    • tree /var/lib/docker/aufs/diff/... | less

Rejestry

Kontenery

  • uruchomiony obraz
  • samowystarczalność (prawie)
  • izolacja
  • jeden proces na kontener (ale i ale)

 

Akcje dostępne dla kontenerów: run, start, stop, kill, rm, export...

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ę

Bezpieczeństwo

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

Inne rozwiązania

Kontrowersje

Haters gonna hate, but...

Pytania

Dziękuję za uwagę!

Marcin Stożek "Perk" / @marcinstozek

Docker dla odważnych

By Marcin Stożek

Docker dla odważnych

  • 4,156