Top Banner
Docker@ICI 22 Iunie 2017
42

[email protected] · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Feb 14, 2018

Download

Documents

doduong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Docker@ICI

22 Iunie 2017

Page 2: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 3: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 4: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Page 5: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Bunu

riTr

ansp

ort

Transport mărfuri înainte de 1960

5

Page 6: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

? ? ? ? ? ? ?

Din nou matrice…

6

Page 7: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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…

Page 8: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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.

Page 9: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 10: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 11: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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/

Page 12: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 13: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 14: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 15: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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/]

Page 16: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 17: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 18: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 19: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 20: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 21: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 22: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 23: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 24: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 25: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 26: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 27: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 28: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 29: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Rețelistică

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

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

29

Page 30: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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/

Page 31: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 32: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 33: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

UI

• Kitematic • https://kitematic.com/

• MacOSX 10.8+• Windows 7+

33

Page 34: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Kitematic - Container

34

Page 35: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Kitematic - Proprietăți generale

35

Page 36: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Kitematic - Port forwarding

36

Page 37: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Kitematic - Sharing

37

Page 38: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Kitematic - Configurare rețea

38

Page 39: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 40: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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

Page 41: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

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)

Page 42: Docker@ICIICI.pdf · cmd - modificări Imagine de bază ubuntu:latest commit Container n Container 3 Container 2. Docker “OS” - Comenzi la nivel imagine • docker images •

Vă mulțumesc!

Q & A

42

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

[email protected]