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

Post on 05-Dec-2014

646 views 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 of Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014

Docker - sovellusympäristöjen tulevaisuus?

Markus Mattinen markus.mattinen@vincit.fi +358 50 432 3912

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

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

• 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

�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

?

�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

• 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

• 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

• 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

• 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?

MITEN DOCKER TOIMII?

�11

Kirjasto  B

Sovellus  1

Sovellus  2

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

Docker  +  LXC

Sovelluspakettien  kerroksia

Sovelluksia

• 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?

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

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

�13

MITEN DOCKER TOIMII?

• 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?

�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

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

�16

DOCKER VASTAAN VIRTUALISOINTI

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

• 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

• 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

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Ä

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Ä

�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

�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

• 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

• 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

www.vincit.fi

KYSYMYKSIÄ?

www.vincit.fi

KIITOSMarkus Mattinen markus.mattinen@vincit.fi +358 50 432 3912