Esecuzione di contenitori all'interno di una macchina virtuale?


15

Comprendo che i contenitori sono molto più leggeri delle macchine virtuali perché non virtualizzano l'hardware ma isolano il software in esecuzione dal software in esecuzione in altri contenitori nel sistema.

La mia situazione è tale che non posso permettermi di acquistare server aggiuntivi e i server che ho sono tutti in esecuzione hypervisor. Devo fornire almeno 6 "server" per ospitare istanze di applicazioni Web relativamente piccole (ogni istanza è per un cliente diverso). Sarebbe inutile eseguire il provisioning di una nuova macchina virtuale per ciascuno di questi server, quindi ho in programma di configurare 2 macchine virtuali e di effettuare una delle seguenti operazioni:

  1. Esegui più istanze dell'applicazione su ogni VM usando host virtuali (apache). o
  2. Installa container nelle VM che mi permetterebbero di isolare gli ambienti.

Considerando questo, esiste un sovraccarico non trascurabile associato ai sistemi container che renderebbe una cattiva idea usarli all'interno di una VM, o c'è qualche altro motivo tecnico per cui non vorrei usare i container?

Risposte:


13

Docker è MOLTO leggero rispetto a una VM e un sistema VM dovrebbe funzionare solo con contenitori funzionanti. Ogni contenitore funziona essenzialmente come un sistema isolato, quindi è ottimo per l'isolamento dal punto di vista della stabilità del sistema. Sulla base della tua descrizione sembra il caso d'uso ideale per Docker. Se fai esperimenti con Docker, assicurati di utilizzare la versione più recente possibile, alcune delle versioni precedenti presentano alcune vulnerabilità piuttosto brutte. Ci sono alcune considerazioni sulla sicurezza quando si esegue Docker.

SELinux - SELinux è a conoscenza del contenitore e creerà automaticamente un'etichetta MCS denominata in modo casuale per ciascun contenitore. Questo aiuta a garantire l'isolamento poiché i contenitori LXC non sono considerati "contenere" da soli, sebbene ciò stia migliorando.

Direttiva USER - In ogni Dockerfile si consiglia di utilizzare la direttiva USER e far eseguire l'utente come account diverso da root, il valore predefinito. Il problema è che l'utente deve esistere nel sistema. Può anche essere frustrante file e directory di chowning / chmodding per questo nuovo utente, ma aiuta a ridurre il rischio. In genere, consiglio di creare un "containeruser" o qualcosa del genere sui propri sistemi per garantire la disponibilità di un utente comune su tutti i sistemi che non si sovrappone a nessun'altra parte del sistema.

Altrimenti la parte più difficile è gestire i contenitori e aggiornarli quando necessario.


3

esiste un sovraccarico non trascurabile associato ai sistemi container che renderebbe una cattiva idea usarli all'interno di una VM

Fa Docker contenitori prestazioni in VMware vSphere aiuto?

o c'è qualche altro motivo tecnico per cui non vorrei usare i contenitori?

Non conosco Docker in generale perché non ci ho ancora lavorato. Penso che il software di gestione manchi ancora di maturità rispetto al software di gestione VM ... ma sono un amministratore vSphere e quindi probabilmente distorto.

Considerando Docker su VM, CoreOS è ora ufficialmente supportato su vSphere 5.5 . Quindi almeno VMware pensa che Docker / container su VM sia OK.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.