CYGWIN环境下使用Docker Toolbox

Docker Toolbox是利用Virtual Box Linux为底部虚拟机实现的。本来想安装Docker for windows的。 不知道咋回事:hyper-v一直装不上(貌似之前用强制卸载清除过)。我又不想去开VMWARE虚拟机使用docker, 毕竟一方面耗资源,另外也不方便集中管理。 于是尝试将docker toolbox改道在cygwin中直接操作,具体过程如下:

安装Docker Toolbox

WIN系统本地安装Docker Toolbox,下载地址是;https://www.docker.com/products/docker-toolbox
如果你已经有virtualbox,则安装时候不要选择toolbox中的virtualbox啦。

移动执行程序

找到docker toolbox(v1.12.6)安装路径下的三个docker开头的exe文件,移动到Cygwin的/bin目录(你习惯用/usr/local/bin或者$HOMT/$user/bin都可以,只要cygwin path系统变量能找到即可)下。

在WIN本地安装好的docker toolbox,移动其中3个以docker开头的可执行文件到cygwin中。

现在,如果你愿意你可以卸载掉WIN系统中的dokcer toobox啦。

cygwin下设置

这一部分比较重要,主要是一些变量设置。

WIN系统软链接

这一步是为本地WIN系统建立2个软链接,以便于下一步bash shell中比较容易找到virtualbox位置。如果你很机智的选择安装到了其他路径(目录不带有空格),那么这一步完全可以跳过哈。我是之前安装安装华为eNSP的时候指定了Virtual Box目录。所以操作了这一步。

mklink /j d:\huawei_ensp "d:\huawei ensp"

CYGWIN系统变量设定

将Virtual Box安装路径等系统变量设置一下,这是docker相关执行程序依赖的。

vim /etc/profile.d/dockertoolbox.sh
###内容如下###
export MACHINE_STORAGE_PATH="j:/os/.docker" #这个是修改host安装的位置,默认是%USERNAME%/.docker
export VBOX_MSI_INSTALL_PATH=/cygdrive/d/huawei_ensp/virtualbox/ #记得缓冲你自己的安装路径
export PATH=$VBOX_MSI_INSTALL_PATH:$PATH
alias dockerm=/bin/docker-machine.exe
alias dockerc=/bin/docker-compose.exe
denv() {
eval $(docker-machine env "$*")
}
export -f denv
###
source !$

测试

新建Docker Virtual Box宿主机


dockerm create --driver virtualbox --virtualbox-hostonly=cidr "192.158.158.1/24" cygdocker

导出docker容器依赖的变量


denv cygtest #这里其实就是运行$(docker-machine env cygtest), 设定docker依赖的宿主机cygtest的一些环境参数。

docker容器


docker ps -a
docker info
docker run -it hello-world
docker search lamp //查找需要的

这里下载最新版的docker tool,会有一个info类型的提示crypto/x509,Google了一下(docker certificate crypto x509),除了降级docker toolkit版本到似乎暂无解决方案。

如果你觉得Virtual Box还是依赖于本机安装~那可以尝试便携版的VB

更新04/07/2017:
对于上面的info类型提示,最新版https://github.com/docker/toolbox/releases已经修复啦。
更新07/29/2018:
运行docker命令时如果报错unable to setup input stream: unable to set IO streams as raw terminal: The handle is invalid.。怎么办? 请连入docker machine属主机再试试!