Sei sulla pagina 1di 20

Docker - virtualizzazione leggera

Dalle virtual machines


ai container

LD2016 @ Latina Linux Group 22/10/2016


Agenda

Com'è fatto un computer: cpu, ram, storage, network


Kernel
Virtualizzazione
Pro e contro della virtualizzazione
Processi
In principio...chroot jail
SELinux
Container
Docker

LD2016 @ Latina Linux Group 22/10/2016


Per fare un computer...

LD2016 @ Latina Linux Group 22/10/2016


Kernel: questo sconosciuto

RAM - Memoria Virtuale


CPU - Shares
Storage & Network - file descriptor

KERNEL (linux)
Il kernel decide chi e quando può
accedere a RAM, CPU e HD.
LD2016 @ Latina Linux Group 22/10/2016
Un processo è...

Il Kernel ingabbia i programmi

Mostra loro una parte delle risorse

I programmi pensano di avere tutte


le risorse a disposizione

Un sw chiede accesso alle risorse


tramite system call

LD2016 @ Latina Linux Group 22/10/2016


Un processo è...una GABBIA!

Il Kernel ingabbia i programmi

Mostra loro una parte delle risorse

I programmi pensano di avere tutte


le risorse a disposizione

Un sw chiede accesso alle risorse


tramite system call

La gabbia si chiama "processo".

LD2016 @ Latina Linux Group 22/10/2016


Per accedere all'hardware servono le syscall!

Hey Kernel, E le paroline


voglio salvare un magiche dove
file su disco! sono?
open(...); Bravo! Tre
write(...); syscall!
close(...);
Quando ho
fatto ti dico...

Ok, resto in
attesa!

LD2016 @ Latina Linux Group 22/10/2016


Per accedere all'hardware servono le syscall!

Che fatica
ioctl(..); coordinare tutti i
sendto(..); processi!
Un attimo e
sono...
stat(..);
lseek(..);
SubitoDaLei
open(...);
write(...);
close(...);

LD2016 @ Latina Linux Group 22/10/2016


Multiutenza, Virtualizzazione & Co

L'isolamento permette la

NT Kernel
multiutenza: più persone usano lo
stesso computer

kvm + libvirt

KERNEL
La virtualizzazione va' oltre:
● vCPU, vStorage

Kernel 1
● kernel virtualizzati (linux,
windows, ...)
● processi eseguiti dai Kernel
LD2016 @ Latina Linux Group 22/10/2016
Multiutenza, Virtualizzazione & Co

NT Kernel
GUEST

KERNEL HOST
kvm + libvirt
Linux Kernel
GUEST
LD2016 @ Latina Linux Group 22/10/2016
Multiutenza, Virtualizzazione & Co

Virtualizzazione:
erogare servizi
su un Hardware che Non C'è ;)

Più utenti usano lo stesso PC


come se ognuno avesse il proprio!
E' economico!
LD2016 @ Latina Linux Group 22/10/2016
Il tuo PC supporta la virtualizzazione?

#egrep 'vmx|svm' /proc/cpuinfo

Hai almeno 20GB sull'HD?


#df -h

Installa GUI e software per gestire le VM


#apt-get install virt-manager libvirt-bin

LD2016 @ Latina Linux Group 22/10/2016


Virtualizzazione: non è gratis

LD2016 @ Latina Linux Group 22/10/2016


Container: isolamento senza kernel separati

Una vm vive in un processo ;)

Nuove tecnologie di isolamento in Linux:


● SELinux - sistema che autorizza ogni syscall()
● Network NameSpace - network virtuali visibili a processi selezionati
● cgroups - quote di risorse per ogni processo
● capabilities - controllo granulare delle funzioni "amministrative"
● chroot - rinchiude un processo in una directory

LD2016 @ Latina Linux Group 22/10/2016


Complicato?

IO HO PROVATO TUTTO:
● chroot
● capabilities
● cgroups
● SELinux
● network namespaces

LD2016 @ Latina Linux Group 22/10/2016


Docker semplifica i container

Esegue processi linux in un ambiente separato che


*sembra* una virtual machine

Ogni container ha uno o più indirizzi IP

I processi del container usano il kernel host

Ha uno store da dove scaricare delle immagini già


pronte
- ubuntu:16.04, centos:7
- mysql:5.7, wordpress
- ...

LD2016 @ Latina Linux Group 22/10/2016


Container: snelli e veloci...

LD2016 @ Latina Linux Group 22/10/2016


Docker in 5 minuti

Installa docker su una centos


#yum install -y docker-engine
2

Avvia il servizio
#systemctl start docker 3

Scarica l'immagine di debian 1


#docker pull debian
4
Lancia bash in
#docker run -t -i debian

LD2016 @ Latina Linux Group 22/10/2016


Descrivere infrastrutture

wordpress:
image: wordpress
links:
- db:mysql
ports:
- 8080:80

db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example

LD2016 @ Latina Linux Group 22/10/2016


DOMANDE?

Grazie per l'ascolto


latina@lists.linux.it
info@llg.it

LD2016 @ Latina Linux Group 22/10/2016

Potrebbero piacerti anche