[email protected] · cmd - modificări imagine de bază ubuntu:latest commit container n container...

42
Docker@ICI 22 Iunie 2017

Upload: doduong

Post on 14-Feb-2018

257 views

Category:

Documents


1 download

TRANSCRIPT

Docker@ICI

22 Iunie 2017

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

2

Static website

Web frontend

User DB

QueueAnalytics DB

Background workers

API endpoint

nginx 1.5 + modsecurity + openssl + bootstrap 2

postgresql + pgv8 + v8

hadoop + hive + thrift + OpenJDK

Ruby + Rails + sass + Unicorn

Redis + redis-sentinel

Python 3.0 + celery + pyredis + libcurl + ffmpeg + libopencv + nodejs + phantomjs

Python 2.7 + Flask + pyredis + celery + psycopg + postgresql-client

Development VM

QA server

Public Cloud

Disaster recovery

Contributor’s laptop

Production Servers

Context

3

Soft

war

eIn

fras

truc

tură

Production Cluster

Customer Data Center

Matrice compatibilități

4

Static website

Web frontend

Background workers

User DB

Analytics DB

Queue

Development VM QA Server Single Prod

ServerOnsite Cluster

Public Cloud

Contributor’s laptop

Customer Servers

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Bunu

riTr

ansp

ort

Transport mărfuri înainte de 1960

5

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Din nou matrice…

6

Bunu

riM

etod

e de

tra

nspo

rt

Soluția: Container standard de transport

7

… ce poate fi încărcat, descărcat, stivuit, transferat de la un mijloc de transport la altul = Transport eficient

Container standard ce poate conține orice tip de produs sigilat până la destinație…

Static website Web frontend User DB Queue Analytics DB

Development VM

QA server Public Cloud Contributor’s laptop

Docker este un sistem de containere de transport pentru cod

8

Soft

war

eIn

fras

truc

tură

Production Cluster

Customer Data Center

Un motor ce permite encapsularea oricărei aplicații într-un container portabil …

… ce poate fi manipulat folosind operații standard și poate fi rulat pe orice platformă hardware.

Static website

Web frontend

Background workers

User DB

Analytics DB

Queue

Development VM QA Server Single Prod

ServerOnsite Cluster

Public Cloud

Contributor’s laptop

Customer Servers

Soluția Docker

9

Separația responsabilităților

• Programator• Responsabil cu ce e în interiorul

containerului• Cod• Librării• Manager pachete• Aplicații• Date

• Toate serverele de producție sunt identice

10

• Administrator• Responsabil cu ”manipularea”

containerului• Logare• Acces• Monitorizare• Configurare rețea

• Toate containerele suportă aceleași comenzi: start, stop, copy, attach, migrate, etc. the same way

Istorie

11

• Lansat în 2013• 2015 - 25.600 stele GitHub, 6.800 forks și 1.100 contribuitori• 2016 - Cisco, Google, Huawei, IBM, Microsoft, Red Hat• 2017 *:• 500.000+ aplicatii containerizate• 100.000+ third party projects• 3.000+ contributori• 8 miliarde de descărcări• 1 miliard $ valoare estimată

• 1 Martie 2017 - Docker v17.03.0-ce* http://expandedramblings.com/index.php/docker-statistics-facts/

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

12

App A

Containere vs. Mașini Virtuale

13

Hypervisor

Host OS

Server

Guest OS

Bins/ Libs

App A’

Guest OS

Bins/ Libs

App B

Guest OS

Bins/ Libs

App A’

Host OS

Server

Bins/Libs App A

Bins/Libs

App B

App B’

App B’

App B’

VM

Container

Containerele sunt izolate dar folosesc același OS

Guest OS

Guest OS

…rezultă o eficiență sporită în spațiu ocupat, versionare librării, start, stop, restart, etc.

Docker Engine

Optimizare prin Docker

14

Bins/ Libs

App A

App v1

App Δ

Bins/

App A

Bins/ Libs

App A’

Guest OS

Bins/ Libs

App v2

Diferențial la nivel de aplicație și la nivel de librării

App A

Guest OS

Bins/ Libs

Copie App v1

Librării partajate

App A

Guest OS

Guest OS

Mașini virtuale Containere

Tehnologia Docker

• libvirt - Platform Virtualization• LXC (LinuX Containers) initial apoi libcontainer (Go): izolarea

containerelor pe aceeași gazdă• Layered File System

15

[Source: https://docs.docker.com/terms/layer/]

Principiile sistemului Docker

16

Source Code

Repository

Dockerfile

Docker Engine

Docker Container

Image Registry

Build

Host 2 OS

Container A

Container B

Container C

Container A

Push

Search Pull

Run

Host 1 OS Docker Engine

Modificări și update-uri

17

Docker Engine

Docker Container

Image Registry

Docker Engine

Push

Update

Bins/ Libs

App v1.0

v1.1

Bins/

Container pt App v1.0

Rulează v2.0

Container pt App v2.0

v1.1

Bins/

Bins/ Libs

App v1.0

Bins/

Bins/ Libs

App v2.0

Containerul conține v1.0 și se va actualiza la v2.0 prin metode

diferențiale.

Container pt App v1.2

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

18

Docker în cercetare

• Dezvoltare aplicații• Testare aplicații existente• Instalare aplicații (Apache, DB, etc.)• Simulare medii complexe (multi-mașină)• Comparații între tehnologii• Crearea de POC

19

Avantaje Docker

• Reducere consum resurse• Repository public de imagini• Ușurința în utilizare• Lucru colaborativ• Izolare proiecte• Testare facilă a aplicațiilor• Deployment rapid• Documentație bine structurată• Comunitate largă

20

Dezavantaje Docker

• La fel de lent ca și soluțiile de virtualizare (KVM)• Overhead Test*: echo “Hello world!”• 6 ms nativ• 1000 ms pe MacOS• 390 ms Linux

* https://www.iron.io/the-overhead-of-docker-run/

21

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

22

Terminologie

• Imagine = “instantaneu” (snapshot) persistat ce poate fi rulat• Container = o instanță activă (ce poate fi rulată) a unei imagini

23

Imagine de bază ubuntu:latest Container 1

Container 1

run

cmd - modificări

Imagine de bază ubuntu:latest

commit

Container n

Container 3

Container 2

Docker “OS” - Comenzi la nivel imagine

• docker images• docker run• docker tag• docker pull• docker rmi• docker build

https://docs.docker.com/reference/ -> Engine (docker) CLI

24

Docker “OS” - Comenzi la nivel container

• docker ps• docker ps -a• docker start• docker stop• docker pause• docker rm• docker commit

https://docs.docker.com/reference/ -> Engine (docker) CLI

25

Dockerfile

• script de tip build• poate fi versionat și atașat surselor• creare automată de imagini

• Exemplu:FROM ubuntu ENV DOCK_MESSAGE Hello My World ADD dir /filesCMD ["bash", “someScript”]

https://docs.docker.com/engine/reference/builder/26

Partajare de directoare

• Partajarea cu mașina gazdă• Suprascrierea completă a directorului

• docker run –v /hostLog:/log ubuntu

https://docs.docker.com/engine/tutorials/dockervolumes/

27

Publicare de port-uri

• Port forwarding din container în mașina fizică

• docker run –p 8080:80 ubuntu

https://docs.docker.com/engine/reference/run/#uts-settings-uts

28

Rețelistică

• docker run --network="test" ubuntu• docker network ls• docker network inspect test

https://docs.docker.com/engine/userguide/networking/

29

Docker compose

• utilitar pentru rularea aplicațiilor multi-container• docker-compose.yml• docker-compose up• docker-compose down

https://docs.docker.com/compose/overview/

30

version: '3'services: web:

build: .ports: - "5000:5000"

volumes: - .:/code - logvolume01:/var/log

links: - redis

redis: image: redis

volumes: logvolume01: {}

https://docs.docker.com/compose/compose-file/

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

31

Studii de caz

• https://docs.docker.com/samples/ :• ASP.net core + SQL Server on Linux• Django and PostgreSQL• CouchDB• MongoDB• Rails and PostgreSQL• Redis• Wordpress

32

UI

• Kitematic • https://kitematic.com/

• MacOSX 10.8+• Windows 7+

33

Kitematic - Container

34

Kitematic - Proprietăți generale

35

Kitematic - Port forwarding

36

Kitematic - Sharing

37

Kitematic - Configurare rețea

38

Agenda

• Ce este docker?• Cum funcționează Docker?• Unde și când pot folosi Docker?• Cum folosesc Docker?• Studii de caz• Ce versiuni există și ce cerințe hardware și software există?• Q&A

39

Versiuni Docker

40

Community Edition

Enterprise Edition Basic

Enterprise Edition

Standard

Enterprise Edition

Advanced

Engine containere, orchestratii, rețelistică, securitate DA DA DA DA

Infrastructură certificată, plugin-uri și containere ISV

DA DA DA

Management imagini Repo public DA DA

Management containere DA DA

Scanare securitate imagini DA

Preț 0 750$ /nod 1500$ / nod 2000$ / nod

Cerințe software și hardware

41

Platformă Docker CE x86_64 Docker CE ARM Docker EE

Ubuntu DA DA DADebian DA DARHEL DA

CentOS DA DAFedora DA

Oracle Linux DASUSE DA

Windows Server 2016 DAWindows 10 DA

macOS DAMicrosoft Azure DA DA

Amazon Web Services DA DA

CPU 2 GhzMemorie 2 Gb

HDD 3 Gb + spațiu imagini ( 100 Mb - 1 Gb / img)

Vă mulțumesc!

Q & A

42

www.docker.coms.l. dr. ing. Vlad Ciobanu

[email protected]