一、背景
最近准备抽点时间研究下docker,选择在家中的windows系统上安装。
我的系统是windows7,首先安装Docker Toolbox,Docker Toolbox是一个工具集,主要包含如下内容:
Docker CLI 客户端,用来运行docker引擎创建镜像和容器 Docker Machine. 可以让你在windows的命令行中运行docker引擎命令 Docker Compose. 用来运行docker-compose命令 Kitematic. 这是Docker的GUI版本 Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境 Oracle VM Virtualbox. 虚拟机
安装完之后,桌面得到如下内容:
此时,通过双击Docker Quickstart Termimal启动。
二、问题
1、问题:looks like something went wrong in step ‘looking for vboxmanage.exe’
一切进行顺利,直到。。。在终端出现如下异常:looks like something went wrong in step ‘looking for vboxmanage.exe’
常规心态:一般出现这种找不到文件的异常都是因为安装目录有问题导致,所以首先看下Docker Quickstart Termimal是从哪里创建的快捷方式,右键->属性
紧跟路径,打开脚本文件start.sh,发现了异常提示是出现在地20行,如下所示:
直观感觉就是由于变量“${VBOX_MSI_INSTALL_PATH}”,或者变量“${VBOX_INSTALL_PATH}”获取异常导致,首先查看环境变量,是否该变量没有写入
发现一切正常,那就通过打印这个变量的值来验证下这个想法,使用最暴力直接的方法,输出变量“${VBOX_MSI_INSTALL_PATH}”,为了防止脚本继续执行,通过read断点
再次运行Docker Quickstart Termimal,结果如下:
发现变量正常解析,那么问题可能不在这里,继续向下断点排查,直到这里
问题直接指向变量"${DOCKER_MACHINE}"获取异常,而该变量是在脚本第18行定义:DOCKER_MACHINE="${DOCKER_TOOLBOX_INSTALL_PATH}docker-machine.exe",使用相同的方法,输出变量${DOCKER_TOOLBOX_INSTALL_PATH}
很明显,该变量获取为空,我的docker-machine.exe是安装在“D:usrDocker Toolbox”,所以直接修改脚本:
同样,将脚本中该变量全部替换为具体路径,再次运行Docker Quickstart Termimal,问题解决,其他一切顺利!
三、其他
附上我个人使用的脚本代码,替换掉响应路径即可
1 #!/bin/bash 2 trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key to continue..."' EXIT 3 4 #Quick Hack: used to convert e.g. "C:Program FilesDocker Toolbox" to "/c/Program Files/Docker Toolbox" 5 win_to_unix_path(){ 6 wd="$(pwd)" 7 cd "$1" 8 the_path="$(pwd)" 9 cd "$wd" 10 echo $the_path 11 } 12 13 # This is needed to ensure that binaries provided 14 # by Docker Toolbox over-ride binaries provided by 15 # Docker for Windows when launching using the Quickstart. 16 export PATH="D:usrDocker Toolbox:$PATH" 17 VM=${DOCKER_MACHINE_NAME-default} 18 DOCKER_MACHINE="D:usrDocker Toolboxdocker-machine.exe" 19 20 STEP="Looking for vboxmanage.exe" 21 if [ ! -z "$VBOX_MSI_INSTALL_PATH" ]; then 22 VBOXMANAGE="${VBOX_MSI_INSTALL_PATH}VBoxManage.exe" 23 else 24 VBOXMANAGE="${VBOX_INSTALL_PATH}VBoxManage.exe" 25 fi 26 27 BLUE='