点击Docker Quickstart Terminal 后屏幕显示如下:
bash: vmrun.exe: command not found
Running pre-create checks...
Creating machine...
(default) Copying C:\Users\hp\.docker\machine\cache\boot2docker.iso to C:\Users\hp\.docker\machine\machines\default\boot2docker.iso...
(default) Creating SSH key...
(default) Creating VM...
(default) Creating disk 'C:\Users\hp\.docker\machine\machines\default\default.vmdk'
(default) Virtual disk creation successful.
(default) Starting default...
(default) Waiting for VM to come online...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\d_my_virtualMachine\Docker Toolbox\docker-machine.exe env default
出了这个问题是因为它找不到 vmrun.exe命令,也就找不到启动的docker系统文件,只好重新创建一个(把之前的系统删除了)docker系统以供使用。
原因就在于我之前做了一些修改,其中就包含了修改docker的启动文件:start.sh
老师建议对这类情况使用vmware workstation 打开 C:\Users\hp.docker\machine\machines\default\default.vmx 然后在里面输入ifconfig | more ,
记录下eth0 的ip,(docker IP)用secureCRT连接该docker IP即可使用。
其实secureCRT和Docker Quickstart Terminal 其实相当于可做人机交互的客户端(类似电脑显示的人机交互界面),背后连接使用的是docker系统(电脑操作系统),vmware workstation 作系统运作的载体(类似电脑的硬件)。
vmware打开docker报错:operation system no found
备注:我之前试过修改start.sh 的export路径,再用vmware workstation开启docker系统default,屡次报错:
最后是把原本的start.sh还原为最初复制粘贴别人正确的代码并移除了default后再次并打开default才正确启动。也许我之前的路径更改尝试并没有错,只是要让系统能识别并运行更改后的文件,还是要移除default后再次打开。
Docker Toolbox\start.sh 里的正确代码(export PATH要符合自己的路径,其余的复制粘贴即可,要用vmware运行docker就要这么做):
#!/bin/bash
export PATH="$PATH:/c/Program Files (x86)/VMware/VMware Workstation"
trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key to continue..."' EXIT
VM=${DOCKER_MACHINE_NAME-default}
DOCKER_MACHINE=./docker-machine.exe
BLUE='\033[1;34m'
GREEN='\033[0;32m'
NC='\033[0m'
if [ ! -f "${DOCKER_MACHINE}" ]; then
echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
exit 1
fi
vmrun.exe list | grep "${VM}" &> /dev/null
VM_EXISTS_CODE=$?
set -e
STEP="Checking if machine $VM exists"
if [ $VM_EXISTS_CODE -eq 1 ]; then
"${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
rm -rf ~/.docker/machine/machines/"${VM}"
#set proxy variables if they exists
if [ -n ${HTTP_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
fi
if [ -n ${HTTPS_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
fi
if [ -n ${NO_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
fi
"${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
fi
STEP="Checking status on $VM"
VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
if [ "${VM_STATUS}" != "Running" ]; then
"${DOCKER_MACHINE}" start "${VM}"
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
fi
STEP="Setting env"
eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"
STEP="Finalize"
clear
cat << EOF
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
EOF
echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
echo "For help getting started, check out the docs at https://docs.docker.com"
echo
cd
docker () {
MSYS_NO_PATHCONV=1 docker.exe "$@"
}
export -f docker
if [ $# -eq 0 ]; then
echo "Start interactive shell"
exec "$BASH" --login -i
else
echo "Start shell with command"
exec "$BASH" -c "$*"
fi
参考:
总的来说我是通过用vmware workstation 打开docker系统default,再用secureCRT连接docker系统才解决了docker无法保存镜像的问题。secureCRT是企业常用的,方便操作docker