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