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

1,627 views

Published on

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.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,627
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
13
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. Docker - sovellusympäristöjen tulevaisuus? Markus Mattinen markus.mattinen@vincit.fi +358 50 432 3912
  2. 2. 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
  3. 3. 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
  4. 4. • 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. 5. 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. 6. 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
  7. 7. • 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
  8. 8. • 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
  9. 9. • 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
  10. 10. • 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?
  11. 11. MITEN DOCKER TOIMII? 11 Kirjasto  B Sovellus  1 Sovellus  2 Sovellus  3Kirjasto  A Sovellus  4 Käyttöjärjestelmä     (Linux) Docker   +  LXC Sovelluspakettien  kerroksia Sovelluksia
  12. 12. • 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?
  13. 13. • Repository • sovelluspakettien säilytyspaikka • https://index.docker.io tai yksityinen • Dockerfile • Kuvaa sovelluksen riippuvuuksia ja tarpeita • Komentojen tulokset välimuistiin 13 MITEN DOCKER TOIMII?
  14. 14. • 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. 15. 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
  16. 16. • Docker on kevyt: • suorituskyky ei laske • muistia ja levytilaa kuluu vähemmän • sovellus nopea käynnistää ja poistaa 16 DOCKER VASTAAN VIRTUALISOINTI
  17. 17. 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
  18. 18. • 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
  19. 19. • 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
  20. 20. 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Ä
  21. 21. 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. 22. 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. 23. 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
  24. 24. • 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
  25. 25. • 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
  26. 26. www.vincit.fi KYSYMYKSIÄ?
  27. 27. www.vincit.fi KIITOS Markus Mattinen markus.mattinen@vincit.fi +358 50 432 3912

×