2015-07-24 7 views
6

Si verifica uno strano errore nel mio vagabondo VM. Così ho creato una nuova macchina virtuale ubuntu/trusty64 usando VirtualBox (su OS X se qualcuno importa).Errore di montaggio anomalo dopo l'installazione di Docker

Tutto bene lì ...

Poi ho installato Docker come da instructions che sostanzialmente prevede l'esecuzione

wget -qO- https://get.docker.com/ | sh 

che funziona troppo fine.

Quindi vado per riavviare la VM, esco dalla shell ssh ed eseguo vagrant reload e ottengo questo messaggio di errore.

Failed to mount folders in Linux guest. This is usually because 
the "vboxsf" file system is not available. Please verify that 
the guest additions are properly installed in the guest and 
can work properly. The command attempted was: 

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant 
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant 

The error output from the last command was: 

stdin: is not a tty 
/sbin/mount.vboxsf: mounting failed with the error: No such device 

Qualche idea?

+0

Perché non utilizzi Docker come provisioner? http://docs.vagrantup.com/v2/provisioning/docker.html invece di installarlo nella VM. –

+0

@ iris-g: ci sono diversi motivi per cui uno vorrebbe farlo. La cosa più ovvia è che la finestra mobile funziona ancora meglio su una piattaforma Linux nativa. Ma quando vuoi condividere l'ambiente di sviluppo del tuo progetto con i tuoi colleghi che lavorano su altre piattaforme come Windows e Mac, è più facile. Devi semplicemente dire loro di installare Vagrant e VirtualBox invece della finestra mobile.Con Vagrant è possibile eseguire il provisioning di un ambiente di sviluppo completo con un comando 'vagrant up' mentre con l'installazione di una finestra mobile semplice è necessario assemblare tutti i contenitori manualmente, il che è molto più difficile da fare. Anche con docker-compose. – h3nrik

risposta

12

Ho affrontato problemi simili. Sembra che Docker (e potenzialmente altri strumenti) quando installato aggiorni la versione del kernel nel tuo guest Ubuntu/Trusty64. Dal momento che VBox GuestAdditions preinstallato in Ubuntu/Trusty64 è stato specificamente sviluppato rispetto alla versione originale del kernel, le aggiunte guest smetteranno di funzionare nel prossimo vagrant up o vagrant reload dato che è quando viene lanciato il nuovo kernel installato da Docker. A quel punto, Vagrant non è più in grado di montare automaticamente la cartella /vagrant (o qualsiasi altra cartella sincronizzata per l'argomento) poiché le aggiunte guest sono state create su un kernel diverso.

Per farli funzionare nuovamente, è necessario ricreare GuestAdditions con la nuova versione del kernel installata da Docker.

Per fortuna, c'è un plugin in Vagrant chiamato vagrant-vbguest che si occupa di ricostruire automaticamente i Guest Additions quando il plugin rileva hanno bisogno di essere ricostruito (vale a dire come quando il kernel nella foresteria modifiche, oppure è aggiornato la versione di VirtualBox in host)

Quindi, nel mio caso, il modo più semplice per risolvere il problema è stato quello di:

  • sull'host: $ vagrant plugin install vagrant-vbguest
  • Sul ospite: $ sudo apt-get install linux-headers-$(uname -r)
  • Sull'host: $ vagrant reload

Grazie al plugin vagrant-vbguest, nuove GuestAdditions VBox verrà ricostruito automaticamente contro la nuova versione del kernel (per il quale si sarebbe scaricato le intestazioni richieste nella seconda fase sopra).

Una volta che le GuestAdditions sono tornate in forma, le cartelle sincronizzate dovrebbero funzionare di nuovo e la mappatura di /vagrant dovrebbe avere successo.

Provalo.

+1

Non ero in grado di seguire le istruzioni con precisione, ma semplicemente installando il plug-in vagrant-vbguest prima di costruire la mia VM sembra che abbia risolto il problema. Grazie! –

+0

Ho aggiornato la mia risposta in modo che le istruzioni dovrebbero essere ora più precise – donhector

Problemi correlati