2016-05-15 105 views
2

boot2docker箱同步文件夹,我尝试将文件夹与boot2docker流浪盒(在Windows 8.1)同步:流浪:在Windows

Vagrantfile

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.hostname = "docker-host" 
    config.vm.box = "hashicorp/boot2docker" 
    config.vm.synced_folder "./src", "/sync/src" 
end 

我尝试了几种方式同步该文件夹:

如果我没有定义类型(如何同步),Vagrant使用SMB。所以,它就像我写:

config.vm.synced_folder "./src", "/sync/src", type: "smb" 

利用这种配置安装失败(我进入我的Windows帐户我登录的凭证):

$ vagrant up 
Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Checking if box 'hashicorp/boot2docker' is up to date... 
==> default: Clearing any previously set forwarded ports... 
==> default: Preparing SMB shared folders... 
    default: You will be asked for the username and password to use for the SMB 
    default: folders shortly. Please use the proper username/password of your 
    default: Windows account. 
    default: 
    default: Username: My Username 
    default: Password (will be hidden): 
==> default: Clearing any previously set network interfaces... 
==> default: Preparing network interfaces based on configuration... 
    default: Adapter 1: nat 
==> default: Forwarding ports... 
    default: 2375 (guest) => 2375 (host) (adapter 1) 
    default: 22 (guest) => 2222 (host) (adapter 1) 
==> default: Running 'pre-boot' VM customizations... 
==> default: Booting VM... 
==> default: Waiting for machine to boot. This may take a few minutes... 
    default: SSH address: 127.0.0.1:2222 
    default: SSH username: docker 
    default: SSH auth method: password 
    default: Warning: Remote connection disconnect. Retrying... 
    default: Warning: Remote connection disconnect. Retrying... 
==> default: Machine booted and ready! 
GuestAdditions versions on your host (5.0.20) and guest (4.3.28 r100309) do not match. 
The guest's platform ("tinycore") is currently not supported, will try generic Linux method... 
Copy iso file C:\Program Files/Oracle/VirtualBox/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso 
Installing Virtualbox Guest Additions 5.0.20 - guest version is 4.3.28 r100309 
mkdir: can't create directory '/tmp/selfgz99220132': No such file or directory 
Cannot create target directory /tmp/selfgz99220132 
You should try option --target OtherDirectory 
An error occurred during installation of VirtualBox Guest Additions 5.0.20. Some functionality may not work as intended. 
In most cases it is OK that the "Window System drivers" installation failed. 
==> default: Setting hostname... 
==> default: Mounting SMB shared folders... 
    default: C:/my-project/src => /sync/src 
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 cifs -o uid=`id -u docker`,gid=`getent group docker | cut -d: -f3`,sec=ntlm,credentials=/etc/smb_creds_d1d75b0a1810a196107486250f8d20f4 //169.254.152.12/d1d75b0a1810a196107486250f8d20f4 /sync/src 
mount -t cifs -o uid=`id -u docker`,gid=`id -g docker`,sec=ntlm,credentials=/etc/smb_creds_d1d75b0a1810a196107486250f8d20f4 //169.254.152.12/d1d75b0a1810a196107486250f8d20f4 /sync/src 

The error output from the last command was: 

mount: mounting //169.254.152.12/d1d75b0a1810a196107486250f8d20f4 on /sync/src failed: Invalid argument 

==> default: The previous process exited with exit code 1. 

如果我使用

config.vm.synced_folder "./src", "/sync/src", type: "nfs" 

改为,流浪者仍然使用SMB(与以前相同的输出)。如果我使用

config.vm.synced_folder "./src", "/sync/src", type: "virtualbox" 

我得到

$ vagrant up 
Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Checking if box 'hashicorp/boot2docker' is up to date... 
==> default: Clearing any previously set forwarded ports... 
The synced folder type 'virtualbox' is reporting as unusable for 
your current setup. Please verify you have all the proper 
prerequisites for using this shared folder type and try again. 

如果我使用

config.vm.synced_folder "./src", "/sync/src", type: "rsync" 

流浪汉,加特林的rsync插件安装

vagrant plugin install vagrant-gatling-rsync 

和赛扬运行gwin(Cmd的没有rsync的),我得到这个:

$ vagrant up 
Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Checking if box 'hashicorp/boot2docker' is up to date... 
==> default: Clearing any previously set network interfaces... 
==> default: Preparing network interfaces based on configuration... 
    default: Adapter 1: nat 
==> default: Forwarding ports... 
    default: 2375 (guest) => 2375 (host) (adapter 1) 
    default: 22 (guest) => 2222 (host) (adapter 1) 
==> default: Running 'pre-boot' VM customizations... 
==> default: Booting VM... 
==> default: Waiting for machine to boot. This may take a few minutes... 
    default: SSH address: 127.0.0.1:2222 
    default: SSH username: docker 
    default: SSH auth method: password 
    default: Warning: Remote connection disconnect. Retrying... 
    default: Warning: Remote connection disconnect. Retrying... 
==> default: Machine booted and ready! 
GuestAdditions versions on your host (5.0.20) and guest (4.3.28 r100309) do not match. 
The guest's platform ("tinycore") is currently not supported, will try generic Linux method... 
Copy iso file C:\Program Files/Oracle/VirtualBox/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso 
Installing Virtualbox Guest Additions 5.0.20 - guest version is 4.3.28 r100309 
mkdir: can't create directory '/tmp/selfgz95812741': No such file or directory 
Cannot create target directory /tmp/selfgz95812741 
You should try option --target OtherDirectory 
An error occurred during installation of VirtualBox Guest Additions 5.0.20. Some functionality may not work as intended. 
In most cases it is OK that the "Window System drivers" installation failed. 
==> default: Setting hostname... 
==> default: Installing rsync to the VM... 
==> default: The machine you're rsyncing folders to is configured to use 
==> default: password-based authentication. Vagrant can't script rsync to automatically 
==> default: enter this password, so you'll likely be prompted for a password 
==> default: shortly. 
==> default: 
==> default: If you don't want to have to do this, please enable automatic 
==> default: key insertion using `config.ssh.insert_key`. 
==> default: Rsyncing folder: /cygdrive/c/my-project/src/ => /sync/src 
There was an error when attempting to rsync a synced folder. 
Please inspect the error message below for more info. 

Host path: /cygdrive/c/my-project/src/ 
Guest path: /sync/src 
Command: rsync --verbose --archive --delete -z --copy-links --chmod=ugo=rwX --no-perms --no-owner --no-group --rsync-path sudo rsync -e ssh -p 2222 -o ControlMaster=auto -o ControlPath=C:/cygwin64/tmp/ssh.640 -o ControlPersist=10m -o StrictHostKeyChecking=no -o IdentitiesOnly=true -o UserKnownHostsFile=/dev/null --exclude .vagrant/ /cygdrive/c/my-project/src/ [email protected]:/sync/src 
Error: Warning: Permanently added '[127.0.0.1]:2222' (ECDSA) to the list of known hosts. 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password,keyboard-interactive). 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] 

==> default: The previous process exited with exit code 1. 

除此之外,我尝试另一个boot2docker箱

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.hostname = "docker-host" 
    config.vm.box = "dduportal/boot2docker" 
    config.vm.synced_folder "./src", "/sync/src" 
end 

导致

$ vagrant up 
Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Checking if box 'dduportal/boot2docker' is up to date... 
==> default: Clearing any previously set forwarded ports... 
==> default: Clearing any previously set network interfaces... 
==> default: Preparing network interfaces based on configuration... 
    default: Adapter 1: nat 
    default: Adapter 2: hostonly 
==> default: Forwarding ports... 
    default: 2375 (guest) => 2375 (host) (adapter 1) 
    default: 2376 (guest) => 2376 (host) (adapter 1) 
    default: 22 (guest) => 2222 (host) (adapter 1) 
==> default: Booting VM... 
==> default: Waiting for machine to boot. This may take a few minutes... 
    default: SSH address: 127.0.0.1:2222 
    default: SSH username: docker 
    default: SSH auth method: private key 
    default: Warning: Remote connection disconnect. Retrying... 
    default: Warning: Remote connection disconnect. Retrying... 
    default: Warning: Authentication failure. Retrying... 
    default: Warning: Authentication failure. Retrying... 
    default: Warning: Authentication failure. Retrying... 
    default: Warning: Authentication failure. Retrying... 
    default: Warning: Authentication failure. Retrying... 


==> default: Waiting for cleanup before exiting... 
Vagrant exited after cleanup due to external interrupt. 

我如何获得文件夹控制同步与Vagrant和boot2docker一起运行?

+0

已经不是泊坞窗工具箱取代了boot2docker的需要?或者至少隐藏它在docker机器后面的用法。我不知道为什么你需要流浪者 –

+1

rsync是在默认b2d框(在Windows上)工作的唯一方法,但由于它的身份验证是基于密码的,因此rsync无法进行身份验证。可以手动同步文件夹,但一段时间以来一直在寻找解决方法。 – shiro

回答

0

在Windows上我的工作设置与dduportal/boot2docker如下所示:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure(2) do |config| 
    config.vm.hostname = "docker-host" 
    config.vm.box = "dduportal/boot2docker" 
    config.vm.provision "docker" 
    config.vm.synced_folder ".", "/vagrant", type: "virtualbox" 
end 
+1

将已同步的文件夹的类型声明为'virtualbox'并没有帮助。我仍然遇到'认证失败'。 – maiermic