docker – sovellusympäristöjen tulevaisuus? - vincit teatime 2014
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
Docker - sovellusympäristöjen tulevaisuus?
Markus Mattinen [email protected] +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 [email protected] +358 50 432 3912