在Docker Toolbox 终端中使用 vboxmanage.exe 程序在宿主机和虚拟机之间创建共享目录
用途说明:
Docker Toolbox软件包中,包括Oracle Virtualbox虚拟化软件,其中包括命令行工具vboxmanage.exe程序,可以实现GUI操作的全部的功能。
可以把vboxmanage.exe sharedfolder 命令用到Toolbox 终端脚本中,通过程序实现自动创建宿主机和虚拟机之间的共享目录。
命令参数:
vboxmanage.exe 子命令:
sharedfolder add
--name
[--transient] [--readonly] [--automount]
命令使用:
1、Windows 7 的命令行方式:
#在 Windows7 上,以管理员身份执行的 cmd ,下述命令通过测试,只是:
c:\Program Files\Oracle\VirtualBox>vboxmanage sharedfolder add test --name aaa --hostpath c:\data --automount
# 注意3点:
# 1. Virtualbox一定要安装扩展包,可到官方网站上下载对应版本的扩展包,
# 具体安装方法步骤是:管理-全局设定-扩展-选择扩展包进行安装.
#
# 2. 在Windows7 上创建完成以后,不会立即出现在管理界面中,
# 需要全部关闭Virtualbox管理程序,然后再启动GUI管理界面,才能生效?!
#
# 3. 需要在虚拟机关闭的状态下,才能正常执行,在虚拟机运行时,执行以下命令会报错,
2、Docker Toolbox 终端方式运行:
# 在Docker Toolbox终端窗口中,执行以下命令,
# Virtualbox的图形管理界面GUI中立刻生效,真是奇怪?!
$("C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" sharedfolder add test --name data --hostpath c:\\data --automount)
# 注意事项:
# 1. 在 Docker Toolbox 终端窗口中,目录没有使用两个反斜杠,
# 如 C:\\data 格式,运行会报以下错误:
catty@15FD201 MINGW64 ~
$ $("C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" sharedfolder add test --name data --hostpath c:\data --automount)
VBoxManage.exe: error: Shared folder path 'c:data' is not absolute
VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component SharedFolderWrap, interface ISharedFolder, callee IUnknown
VBoxManage.exe: error: Context: "CreateSharedFolder(Bstr(name).raw(), Bstr(hostpath).raw(), fWritable, fAutoMount)" at line 1021 of file VBoxManageMisc.cpp
# 2. 在 Docker Toolbox 终端窗口中,如果虚拟机没有关闭的情况下,
# 增加共享目录时会报错,提示虚拟机被锁定,信息如下:
$ $("C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" sharedfolder add test --name data3 --hostpath c:\\data --automount)
VBoxManage.exe: error: The machine 'test' is already locked for a session (or being unlocked)
VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee IUnknown
VBoxManage.exe: error: Context: "LockMachine(a->session, LockType_Write)" at line 1013 of file VBoxManageMisc.cpp