Transcript
Page 1: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

Docker - sovellusympäristöjen tulevaisuus?

Markus Mattinen [email protected] +358 50 432 3912

Page 2: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

TAUSTA: WEB-PALVELUIDEN KEHITYS

�2

Vertikaalinen  skaalautuminen

Tarkkaan  määritelty  sovellusympäristö

Fyysiset  palvelimet  palvelinsalissa

Horisontaalinen  skaalautuminen

Kehittäjän  tarpeidensa  mukaan  kokoama  sovellusympäristö

Pilviympäristöt,  virtualisointi

Keskitetyt  palvelut Hajautetut  palvelut

Page 3: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

1. Ongelma 2. Ratkaisu: Docker 3. Dockerin tausta 4. Miten Docker toimii? 5. Docker vastaan virtualisointi 6. Esimerkkejä 7. Miten Vincit käyttää Dockeria? 8. Miten kokeilen Dockeria?

�3

SISÄLLYSLUETTELO

Page 4: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Sovellusten riippuvuudet • Useasta lähteestä • Voivat olla ristiriitaisia ‣ Asentaminen käsin työlästä

• Suoritusalustat • Eri Linux-jakelut • Pakettienhallinta ja riippuvuudet

• Virtualisointialustat ja pilviympäristöt • Puhtaasta asennuksesta sovellukseen

�4

ONGELMA

Page 5: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

�5

ONGELMA: SUORITUSALUSTAT

Web-­‐sivusto

Työprosessit

Käyttäjätietokanta

Analytiikkatietokanta

Viestijono

API

Frontend

Kehittäjän  työkone  (Mac)

Laadun-­‐varmistus

Julkinen  pilvialusta

Vara-­‐järjestelmä

Yksityinen  pilvialusta

Fyysiset  tuotanto-­‐palvelimet

Kehittäjän  työkone  (Linux)

Kehittäjän  työkone  (Windows)

Demo-­‐palvelin

?

Page 6: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

�6

RATKAISU: SUORITUSALUSTAT

Web-­‐sivusto

Työprosessit

Käyttäjätietokanta

Analytiikkatietokanta

Viestijono

API

Kehittäjän  työkone  (Mac)

Julkinen  pilvialusta

Vara-­‐järjestelmä

Yksityinen  pilvialusta

Fyysiset  tuotanto-­‐palvelimet

Kehittäjän  työkone  (Linux)

Kehittäjän  työkone  (Windows)

Demo-­‐palvelin

Frontend

Laadun-­‐varmistus

Docker

Page 7: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Sovellusten paketointi- ja suoritusympäristö • Docker-sovellus • ei välitä ympäristöstään ✓Levitettävyys

• tuo riippuvuutensa mukanaan ✓Toistettavuus

• suoritetaan eristetyssä “hiekkalaatikossa” ✓Tietoturva ✓Ristiriidattomuus

�7

RATKAISU: DOCKER

Page 8: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Selkeä erottelu paketointi-, konfigurointi- ja suoritusvaiheille ✓Tehtävien jakaminen

• Rakennetaan ja suoritetaan puhtaassa ympäristössä ✓Eroosion välttäminen !

‣ Paketoi kerran, aja missä tahansa

�8

RATKAISU: DOCKER

Page 9: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Kehitetään GitHubissa avoimesti • https://github.com/dotcloud/docker

• Aloitettu 2013 alussa • Jo 300 kehittäjää • Merkittäviä käyttäjiä • Yandex Cocaine, Baidu App Engine

�9

DOCKERIN TAUSTA

Page 10: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Sovelluspaketti (image) • Kerroksia • Kirjastoja ja ohjelmakoodia

• Sovellus (container) • Yksi tai useampia prosesseja • Ympäristömuuttujat • Portit ja ip-osoitteet

• Oma tiedostojärjestelmäkerros

�10

MITEN DOCKER TOIMII?

Page 11: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

MITEN DOCKER TOIMII?

�11

Kirjasto  B

Sovellus  1

Sovellus  2

Sovellus  3Kirjasto  A Sovellus  4Käyttöjärjestelmä    (Linux)

Docker  +  LXC

Sovelluspakettien  kerroksia

Sovelluksia

Page 12: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Kerrokset (layer) • Copy-on-Write • versiointi • levytilan säästö

• Volyymit (volume) • Muuttuvan datan säilyttämiseen • Voidaan jakaa sovellusten välillä

�12

MITEN DOCKER TOIMII?

Page 13: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Repository • sovelluspakettien säilytyspaikka • https://index.docker.io tai yksityinen

• Dockerfile • Kuvaa sovelluksen riippuvuuksia ja tarpeita • Komentojen tulokset välimuistiin

�13

MITEN DOCKER TOIMII?

Page 14: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Linkit • Liitetään esim. tietokanta sovellukseen • Ympäristömuuttujat

• Komennot • build: Dockerfile + ohjelmakoodi = paketti • push: paketin julkaiseminen repositoryyn • pull: paketin noutaminen tai päivittäminen • run: Sovellus käyntiin

�14

MITEN DOCKER TOIMII?

Page 15: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

�15

ESIMERKKI-WORKFLOW

Dockerfile

Ohjelmakoodi

Paketti Repository

Repository Paketti

Konfiguraatio

Sovellus

• build + push (kehittäjän työkoneella)

• pull + run (palvelinkoneella tai pilviympäristössä)

Volyymit

Page 16: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Docker on kevyt: • suorituskyky ei laske • muistia ja levytilaa kuluu vähemmän • sovellus nopea käynnistää ja poistaa

�16

DOCKER VASTAAN VIRTUALISOINTI

Page 17: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

DOCKER VASTAAN VIRTUALISOINTI

�17

Kirjasto  B

Sovellus  1

Sovellus  2

Sovellus  3Kirjasto  A Sovellus  4

Kirjasto  A Kirjasto  B Sovellus  1Käyttöjärjestelmä

Kirjasto  A Kirjasto  B Sovellus  2Käyttöjärjestelmä

Kirjasto  A Kirjasto  B Sovellus  3Käyttöjärjestelmä

Kirjasto  A Sovellus  4Käyttöjärjestelmä

Docker

Virtuaalikoneet

Käyttö-­‐  järjestelmä

Virtualisointi

Käyttö-­‐  järjestelmä

Docker

Page 18: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Docker keskittyy sovelluksiin: • työkaluja konfigurointiin, versiointiin,

monitorointiin, porttien ja lokien hallintaan… • suoritusympäristössä voidaan ajaa komentoja

ilman erillisiä työkaluja

�18

DOCKER VASTAAN VIRTUALISOINTI

Page 19: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Docker toimii lähes missä vain: • pilvessä: Google Cloud Platform, Rackspace

Cloud, Amazon EC2, DigitalOcean… • virtualisointialustoilla: Xen, KVM, VirtualBox,

VMWare Server, ESXi…

�19

DOCKER VASTAAN VIRTUALISOINTI

Page 20: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

FROM ubuntu:12.04 !RUN apt-get update RUN apt-get install -y apache2 !ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 !EXPOSE 80 !CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

�20

DOCKERFILE-ESIMERKKEJÄ

Page 21: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

FROM vincit/apache2 !RUN apt-get update RUN apt-get install -y php5 libapache2-mod-php5 php5-pgsql php5-cli !ADD config/php.ini /etc/php5/php.ini !ADD config/www /var/www !CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

�21

DOCKERFILE-ESIMERKKEJÄ

Page 22: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

�22

ESIMERKKIKOMENTOJA

docker run -d -p 5432:5432 -name postgresql_instance orchardup/postgresql

• Sovelluspaketin rakentaminen (kansiossa, jossa on Dockerfile)

docker build -t web-sovellus .

• Tietokannan käynnistäminen

Page 23: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

�23

ESIMERKKIKOMENTOJA

docker ps

• Käynnissä olevien sovellusten tarkastelu

IMAGE PORTS NAMES web-sovellus:latest 0.0.0.0:49153->80/tcp angry_pare orchardup/postgresql:latest 0.0.0.0:5432->5432/tcp angry_pare/database,postgresql_instance

docker run -d -p 80 -link postgresql_instance:database my-web-app

• Sovelluksen käynnistäminen, tietokannan linkkaaminen

Page 24: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Demo-palvelin • staging, asiakasdemot, teknologiademot

• Taustalla Dokku: Docker-pohjainen mini-Heroku • Sovelluksen julkaiseminen !!!

• Tietokannat • Reverse proxy

�24

MITEN VINCIT KÄYTTÄÄ DOCKERIA?

git remote add dokku dokku@demoserver:projekti git push dokku HEAD:master

Page 25: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

• Windows • Vagrant + VirtualBox + boot2docker

• Mac OS X • Vagrant + VirtualBox !!

!• Linux • Kernel 3.8+ suositeltu

�25

MITEN KOKEILEN DOCKERIA?

brew tap homebrew/binary && brew install docker brew tap fnichol/dvm && brew install dvm

curl -sL https://get.docker.io | sh

Page 26: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

www.vincit.fi

KYSYMYKSIÄ?

Page 27: Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

www.vincit.fi

KIITOSMarkus Mattinen [email protected] +358 50 432 3912