SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
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	
  4
Kä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
KIITOS
Markus Mattinen
markus.mattinen@vincit.fi
+358 50 432 3912

Mais conteúdo relacionado

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

Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Karl Ots
 
Konttiratkaisujen tietoturva - Tero Niemistö
Konttiratkaisujen tietoturva - Tero NiemistöKonttiratkaisujen tietoturva - Tero Niemistö
Konttiratkaisujen tietoturva - Tero NiemistöDigia Plc
 
Kontit pomppimaan3
Kontit pomppimaan3Kontit pomppimaan3
Kontit pomppimaan3Arto Santala
 
Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Teemu Tiainen
 
Mac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusanaMac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusanaSovelto
 
Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017Jouni Heikniemi
 
Store App -kehityksen aloittaminen
Store App -kehityksen aloittaminenStore App -kehityksen aloittaminen
Store App -kehityksen aloittaminenSovelto
 
Nebula Cloud 9, for Software development Professional
Nebula Cloud 9, for Software development ProfessionalNebula Cloud 9, for Software development Professional
Nebula Cloud 9, for Software development ProfessionalMarkus Vuorinen
 
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystä
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystäNebula pilvi 9 kehittäjille - tukemassa ketterää kehitystä
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystäNebula Oy
 
W3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubW3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubDeittisirkus
 
Pilven rakennusaineet
Pilven rakennusaineetPilven rakennusaineet
Pilven rakennusaineetSovelto
 
Adobe ja HTML5
Adobe ja HTML5Adobe ja HTML5
Adobe ja HTML5Sovelto
 
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?Teemu Tiainen
 
Windows 10 yrityskäyttöön - ominaisuudet
Windows 10 yrityskäyttöön - ominaisuudetWindows 10 yrityskäyttöön - ominaisuudet
Windows 10 yrityskäyttöön - ominaisuudet3 Step IT Suomi
 
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...Management Institute of Finland MIF
 
TechDays 2010: Perinteinen palvelinympäristö
TechDays 2010: Perinteinen palvelinympäristöTechDays 2010: Perinteinen palvelinympäristö
TechDays 2010: Perinteinen palvelinympäristöJarno Mäki
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetVaihde 7
 
Windows 7 Työn tuottavuus
Windows 7 Työn tuottavuusWindows 7 Työn tuottavuus
Windows 7 Työn tuottavuusVaihde 7
 
Windows 8
Windows 8Windows 8
Windows 8Sovelto
 
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...Digitalmikkeli
 

Semelhante a Docker – sovellusympäristöjen tulevaisuus? - Vincit Teatime 2014 (20)

Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
Sovellusmodernisoinnin webinaarisarja, osa 2: liiketoimintasovelluksen modern...
 
Konttiratkaisujen tietoturva - Tero Niemistö
Konttiratkaisujen tietoturva - Tero NiemistöKonttiratkaisujen tietoturva - Tero Niemistö
Konttiratkaisujen tietoturva - Tero Niemistö
 
Kontit pomppimaan3
Kontit pomppimaan3Kontit pomppimaan3
Kontit pomppimaan3
 
Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015Sovellusvirtualisointi - Mitä missä milloin 2015
Sovellusvirtualisointi - Mitä missä milloin 2015
 
Mac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusanaMac-työasemat ylläpidon kiusana
Mac-työasemat ylläpidon kiusana
 
Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017Azure JKL Keynote 9.11.2017
Azure JKL Keynote 9.11.2017
 
Store App -kehityksen aloittaminen
Store App -kehityksen aloittaminenStore App -kehityksen aloittaminen
Store App -kehityksen aloittaminen
 
Nebula Cloud 9, for Software development Professional
Nebula Cloud 9, for Software development ProfessionalNebula Cloud 9, for Software development Professional
Nebula Cloud 9, for Software development Professional
 
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystä
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystäNebula pilvi 9 kehittäjille - tukemassa ketterää kehitystä
Nebula pilvi 9 kehittäjille - tukemassa ketterää kehitystä
 
W3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHubW3: Hajautettua versionhallintaa - Git & GitHub
W3: Hajautettua versionhallintaa - Git & GitHub
 
Pilven rakennusaineet
Pilven rakennusaineetPilven rakennusaineet
Pilven rakennusaineet
 
Adobe ja HTML5
Adobe ja HTML5Adobe ja HTML5
Adobe ja HTML5
 
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?
Miten käyttäjäkokemus virtualisoidaan Microsoft UE-V:n avulla?
 
Windows 10 yrityskäyttöön - ominaisuudet
Windows 10 yrityskäyttöön - ominaisuudetWindows 10 yrityskäyttöön - ominaisuudet
Windows 10 yrityskäyttöön - ominaisuudet
 
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...
Uusi MIF -kiertue. Kai Lehtonen: IT –infrastruktuurin uudistaminen IaaS –pilv...
 
TechDays 2010: Perinteinen palvelinympäristö
TechDays 2010: Perinteinen palvelinympäristöTechDays 2010: Perinteinen palvelinympäristö
TechDays 2010: Perinteinen palvelinympäristö
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudet
 
Windows 7 Työn tuottavuus
Windows 7 Työn tuottavuusWindows 7 Työn tuottavuus
Windows 7 Työn tuottavuus
 
Windows 8
Windows 8Windows 8
Windows 8
 
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...
Datajalostamo-seminaari 5.6.2014: Sovelluskehittäjät ja data – kehittäjäyhtei...
 

Mais de VincitOy

Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincitOy
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincitOy
 
Vincit ankkasarjakuva
Vincit ankkasarjakuvaVincit ankkasarjakuva
Vincit ankkasarjakuvaVincitOy
 
Tampere goes agile 2015
Tampere goes agile 2015Tampere goes agile 2015
Tampere goes agile 2015VincitOy
 
Digijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecDigijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecVincitOy
 
Digijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesDigijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesVincitOy
 
Digijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloDigijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloVincitOy
 
Digijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitDigijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitVincitOy
 
Itseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosItseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosVincitOy
 
Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015VincitOy
 
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincitOy
 
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...VincitOy
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...VincitOy
 
Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013VincitOy
 
Projektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarProjektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarVincitOy
 
Vincit V-Käyrä
Vincit V-KäyräVincit V-Käyrä
Vincit V-KäyräVincitOy
 
Need more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätNeed more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätVincitOy
 
Trello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaTrello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaVincitOy
 
Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014VincitOy
 
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014VincitOy
 

Mais de VincitOy (20)

Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
 
Vincit ankkasarjakuva
Vincit ankkasarjakuvaVincit ankkasarjakuva
Vincit ankkasarjakuva
 
Tampere goes agile 2015
Tampere goes agile 2015Tampere goes agile 2015
Tampere goes agile 2015
 
Digijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - SimsotecDigijytky kunnossapidossa 2015 - Simsotec
Digijytky kunnossapidossa 2015 - Simsotec
 
Digijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-FilesDigijytky kunnossapidossa 2015 - M-Files
Digijytky kunnossapidossa 2015 - M-Files
 
Digijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - OliotaloDigijytky kunnossapidossa 2015 - Oliotalo
Digijytky kunnossapidossa 2015 - Oliotalo
 
Digijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - VincitDigijytky kunnossapidossa 2015 - Vincit
Digijytky kunnossapidossa 2015 - Vincit
 
Itseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutosItseohjautuvan organisaation muutos
Itseohjautuvan organisaation muutos
 
Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015Vincit markkinointi AMKE VIMMA 2.6.2015
Vincit markkinointi AMKE VIMMA 2.6.2015
 
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google GlassVincit Teatime 2015 - Case Käyttöauto: Google Glass
Vincit Teatime 2015 - Case Käyttöauto: Google Glass
 
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
Vincit Teatime 2015 - Niko Kurtti: Case Shopify: SaaS:n testaaminen, mihin un...
 
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
Improving Code Quality In Medical Software Through Code Reviews - Vincit Teat...
 
Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013Implementation of an intelligent car wash service - Vincit Teatime 2013
Implementation of an intelligent car wash service - Vincit Teatime 2013
 
Projektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & ApgarProjektipäivät 2014: V-Käyrä & Apgar
Projektipäivät 2014: V-Käyrä & Apgar
 
Vincit V-Käyrä
Vincit V-KäyräVincit V-Käyrä
Vincit V-Käyrä
 
Need more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: VirittäjätNeed more speed! Pain of mobile app development. Case: Virittäjät
Need more speed! Pain of mobile app development. Case: Virittäjät
 
Trello projektinhallinnan työkaluna
Trello projektinhallinnan työkalunaTrello projektinhallinnan työkaluna
Trello projektinhallinnan työkaluna
 
Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014Avaus - Vincit Teatime 2014
Avaus - Vincit Teatime 2014
 
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
Kannattaako graafikko pitää leivässä? - Vincit Teatime 2014
 

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

  • 1. Docker - sovellusympäristöjen tulevaisuus? Markus Mattinen markus.mattinen@vincit.fi +358 50 432 3912
  • 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. 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. • 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 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 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. • 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. • 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. • 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. • 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. 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. • 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. • 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. • 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 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. • Docker on kevyt: • suorituskyky ei laske • muistia ja levytilaa kuluu vähemmän • sovellus nopea käynnistää ja poistaa 16 DOCKER VASTAAN VIRTUALISOINTI
  • 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. • 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. • 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. 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. 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 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 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. • 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. • 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