docker – sovellusympäristöjen tulevaisuus? - vincit teatime 2014

27
Docker - sovellusympäristöjen tulevaisuus? Markus Mattinen [email protected] +358 50 432 3912

Upload: vincitoy

Post on 05-Dec-2014

648 views

Category:

Technology


2 download

DESCRIPTION

Docker on kehityksen alla oleva avoimen lähdekoodin projekti, jonka tavoitteena on tarjota yhtenäinen ympäristö palvelinsovellusten suorittamiseen lähes missä tahansa. Perusajatuksena on, että Dockerilla paketoitu sovellus käyttäytyy sekä kehittäjien työkoneilla että erilaisilla palvelin- ja pilvialustoilla identtisesti. Docker-sovellukset tuovat suoritusympäristönsä mukanaan, mutta ovat huomattavasti kevyempiä luoda ja käynnistää kuin perinteiset virtuaalikoneet.

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