2014-10-30 5 views
12

Stavo configurando un server Selenium utilizzando la finestra mobile, in pratica seguendo il tutorial su gitub this.Elaborazione finestra mobile Elaborazione dell'elenco host visualizzato su

Non ho problemi nel configurare il server, ma ho notato che i processi che ho avviato all'interno dell'immagine del docker sono stati effettivamente visualizzati nell'elenco dei miei processi host.

enter image description here

Come si può vedere nella schermata, la finestra mobile correva uno script bash e anche eseguito un file jar, che presumo dovrebbe avvenire solo all'interno della scatola. Ciò significa che l'utente dall'host potrebbe eventualmente uccidere un determinato processo al di fuori del contenitore che rovinerà totalmente il mondo all'interno della scatola?

Quando ho interrotto il contenitore, tutti i processi sono andati via come mi aspettavo.

È questo il modo in cui Docker è progettato per .. e l'isolamento imperfetto è quello che devi accettare in commercio per il confronto leggero con Virtualbox/Vagrant ... o sto facendo qualcosa di sbagliato?

Grazie!

+0

bene se vi lasciate guidare per http://12factor.net/ non si hanno problemi con risorse esterne. Ma non sono chiaro riguardo la tua domanda su qualche processo esterno ... all'interno del contenitore mobile sono tutti isolati, solo se uccidi il contenitore i servizi non funzionano. – kikicarbonell

+0

È così. Non sono sicuro che lo descriverei come "imperfetto". – user2105103

risposta

19

Sì, questo è come previsto. Si noti che i processi sono avviati da root, quindi un utente con privilegi di root può ucciderli, ma un utente con privilegi di root può fare peggio di quello (ad esempio, disinstallare docker o_O) ...

Questo isolamento "difettoso" in realtà ha alcuni grandi vantaggi, come la capacità di monitor i processi in esecuzione all'interno di tutti i contenitori da un singolo processo di monitoraggio in esecuzione sul computer host.

25

Questo sembra essere un comune malinteso circa Docker essere leggero macchina virtuale" è per questo che ci si potrebbe aspettare un comportamento simile come VirtualBox o VMWare, ma solo più veloce.

Docker non usa la virtualizzazione, in modo che tutti i processi eseguiti dal kernel host nativo appena isolato l'uno dall'altro L'utente non root non può uccidere i processi all'interno del contenitore, ma root può bloccare l'intero contenitore non solo uccidere un processo

Per distinguere tra processi in esecuzione all'interno del contenitore e altri, eseguire top quindi premere shift+f e selezionare nsPID e n sUSER come mostrato nello screenshot allegato.

Quindi accanto a ciascun processo verrà visualizzato lo spazio dei nomi se sul server è in esecuzione direttamente questo valore molto probabilmente sarà vuoto e se il processo in esecuzione all'interno di un contenitore verrà visualizzato l'id dello spazio dei nomi per ciascun contenitore. (È possibile ordinare per lo spazio dei nomi per vedere i processi in ogni contenitore)

top nsPID and nsUSER