Docker è una soluzione lightweight di virtualizzazione in ambienti Unix.

Docker

Docker è una soluzione lightweight di virtualizzazione in ambienti Unix.

Come funziona

Basata su tecnologia Linux Container (LXC), la piattaforma Docker è stata rilasciata come open source nel marzo del 2013 da dotCloud, PaaS provider americano.

Docker permette agli sviluppatori e agli amministratori di sistema di creare e gestire ambienti applicativi virtuali chiamati container, in maniera efficiente, rapida ed economica.

Un container Docker tipicamente ospita un'applicazione e tutte le sue dipendenze, il tutto inserito dentro un formato standard, facilmente trasportabile e deployabile su qualunque "host" senza bisogno di particolari configurazione del sistema. Il container, infatti, include in sè tutto quello di cui ha bisogno (file binari, librerie, file di configurazione, script, virtualenvs, jars, tarballs, ecc.), evitando quindi complesse configurazioni sistemistiche per effettuare i deploy.

Un container Docker può essere eseguito su qualsiasi kernel Linux di ultima generazione.

E’ possibile effettuare il deploy di un container Docker ovunque: su un computer portatile, su una infrastruttura distribuita, nel cloud, ecc, ogni volta preservando integralmente l'ambiente originario.

Docker può essere usato anche in ambienti virtuali o sistemi “bare metal”.

Principali feature

  • Isolamento del file system: il processo di ciascun container opera all’interno di un root file system separato
  • Isolamento delle risorse: le risorse di sistema (CPU, memoria,...) possono essere allocate in maniera differente sul processo di ciascun container, utilizzando cgroups
  • Isolamento delle rete: il processo di ciascun container opera all’interno di una rete virtuale non connessa con l’host, se non esplicitamente esponendo porte specifiche
  • Copy-on-write: i root file system sono creati mediante strategie copy-on-write, per garantire snapshot consistenti e tracciabili
  • Logging: gli stream standard (stdout/stderr/stdin) del processo di ciascun container sono memorizzati per la consultazione real time o batch
  • Change management: è possibile effettuare il commit dei cambiamenti al file system di un container in una nuova immagine, riutilizzabile per la creazione di un nuovo container

Pro

  • Piattaforma affidabile, costituisce un ottimo tool per costruire, gestire e condurre applicazioni distribuite
  • Prestazioni: l’assenza di un hypervisor per la gestione delle macchine virtuali e la velocità con la quale, tramite le API, i containers possono essere lanciati o spenti quando non più necessari riduce il consumo di risorse rispetto ad altre tecniche di virtualizzazione
  • Ottimo tutorial on line
  • Docker Hub: il servizio SaaS per la condivisione di stack applicativi presenta numerosi repository ufficiali, per la maggior parte delle componenti applicative più diffuse (Ubuntu, PostgreSQL, Nginx, MySql, ecc..)
  • Ambiente open e supporto della community: Docker è una delle novità più rilevanti degli ultimi anni nel mondo dell’open source. I numeri parlano da soli: più di 18.000 GitHub Stars, 100 milioni di download del Docker Engine, 45000 applicazioni “Docker” nel Docker Hub, più di 700 contributors dalla community, numerosi ed importanti casi di studio come eBay, Rackspace, Spotify, Cloudflare, Yandex ecc..

Contro

  • Curva di apprendimento ostica per utenti che non hanno familiarità con Linux
  • Interfaccia a linea di comando eccessivamente “verbosa”

Quando usarlo

Docker è adatto per una vasta gamma di impieghi: implementazioni web, cluster di database, SOA, ecc.

E’ particolarmente indicato per la Continuous Delivery: la distribuzione del software via container tra i vari ambienti di sviluppo, test e produzione può essere rapidamente automatizzata, senza particolari preoccupazioni per le inevitabili differenze in termini di configurazioni, dipendenze, sistemi operativi.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus