2015-07-24 26 views
6

Tôi nhận được một lỗi lạ trong máy ảo lang thang của mình. Vì vậy, tôi đã tạo một máy ảo ubuntu/trusty64 mới bằng VirtualBox (trên OS X nếu có ai quan tâm).Lỗi gắn kết âm đạo sau khi cài đặt Docker

Tất cả tốt có ...

Sau đó, tôi cài đặt Docker theo instructions mà về cơ bản liên quan đến việc chạy

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

đó làm việc tốt quá.

Sau đó, tôi khởi động lại VM, tôi thoát vỏ ssh và chạy vagrant reload và tôi nhận được thông báo lỗi này.

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 

Mọi suy nghĩ?

+0

Tại sao bạn không sử dụng Docker làm bộ cung cấp? http://docs.vagrantup.com/v2/provisioning/docker.html thay vì cài đặt nó trong VM. –

+0

@ iris-g: có một số lý do khiến một người làm như vậy. Rõ ràng nhất là docker vẫn chạy tốt nhất trên nền tảng Linux bản địa. Nhưng khi bạn muốn chia sẻ môi trường phát triển của dự án của bạn với các đồng nghiệp của bạn làm việc trên các nền tảng khác như Windows và Mac, nó sẽ dễ dàng hơn. Bạn chỉ cần yêu cầu họ cài đặt Vagrant và VirtualBox thay vì docker.Với Vagrant, bạn có thể cung cấp một môi trường phát triển hoàn chỉnh với một lệnh 'vagrant up' trong khi cài đặt docker đơn giản, bạn cần lắp ráp tất cả các thùng chứa bằng tay, đó là nhiều nỗ lực hơn để thực hiện. Cũng với docker-compose. – h3nrik

Trả lời

12

Tôi gặp phải sự cố tương tự. Có vẻ như Docker (và các công cụ tiềm năng khác) khi được cài đặt sẽ cập nhật phiên bản hạt nhân trong máy khách Ubuntu/Trusty64 của bạn. Kể từ khi VBox GuestAdditions được cài đặt sẵn trong Ubuntu/Trusty64 được xây dựng đặc biệt dựa trên phiên bản hạt nhân ban đầu, các bổ sung khách sẽ ngừng hoạt động trong vagrant up hoặc vagrant reload tiếp theo vì đó là khi hạt nhân mới được cài đặt bởi Docker khởi động. Tại thời điểm đó, Vagrant không còn có thể tự động gắn kết thư mục /vagrant (hoặc bất kỳ thư mục được đồng bộ hóa nào cho sự cố) khi các Bổ sung Khách được xây dựng dựa trên một hạt nhân khác.

Để làm cho chúng hoạt động trở lại, bạn phải xây dựng lại GuestAdditions dựa vào phiên bản hạt nhân mới mà Docker đã cài đặt.

May mắn thay, có một plugin trong Vagrant được gọi là vagrant-vbguest, đảm bảo tự động xây dựng lại Khách bổ sung khi plugin phát hiện chúng cần được xây dựng lại (tức là khi hạt nhân trong khách thay đổi hoặc bạn nâng cấp phiên bản VirtualBox của mình host)

Vì vậy, trong trường hợp của tôi, một cách dễ dàng để sửa chữa nó là:

  • Mở máy chủ: $ vagrant plugin install vagrant-vbguest
  • trên khách: $ sudo apt-get install linux-headers-$(uname -r)
  • Mở máy chủ: $ vagrant reload

Nhờ các plugin vagrant-vbguest, GuestAdditions VBox mới sẽ tự động xây dựng lại với phiên bản mới của kernel (mà bạn đã có thể tải về các tiêu đề cần thiết trong bước thứ hai ở trên).

Sau khi GuestAdditions trở lại hình dạng, các thư mục được đồng bộ hóa sẽ hoạt động trở lại và ánh xạ /vagrant sẽ thành công.

Hãy dùng thử.

+1

Tôi đã không thể làm theo hướng dẫn chính xác, nhưng chỉ cần cài đặt plugin vagrant-vbguest trước khi xây dựng VM của tôi dường như đã khắc phục được sự cố của tôi. Cảm ơn! –

+0

Tôi đã cập nhật câu trả lời của mình để các hướng dẫn giờ đây chính xác hơn – donhector

Các vấn đề liên quan