Docker Machine 使用备忘
2016-05-26 08:18
861 查看
最近尝试了在Windows环境下配置Docker Machine,按照官方文档的说明一步步做下来,把中间遇到的问题做个记录备查。
首先安装Git for Windows,获得一个用MingW64模拟出的Shell环境。这个Shell环境把Windows下的驱动器映射成根目录下的一级子目录,例如C:>就是/c。这个记下来待会儿有用。
接下来去Docker Machine发布页下载docker machine可执行文件,文件名格式为docker-machine-
这里的plugin是指docker-machine用于和各种物理平台打交道的一套接口驱动(driver),例如使用virtualbox创建本地的docker machine就是
出坑过程是这样的:由于检查了半天驱动发现实在是找不到有什么问题,于是在Ubuntu下安装Linux版本的docker machine,发现一切正常。再回到Windows下,在mingw64环境外——也就是直接用cmd.exe运行docker machine,由于cmd.exe要求提供后缀,否则不认为是可执行程序,所以把”.exe”加了回去。结果运行
按照Unix用户的习惯,文件后缀变化是不会影响shell对文件类型的判断的,更不会影响其执行结果。但在Windows环境下使用模拟的shell环境则会出现这样的问题,这可能是docker machine一个潜在的bug。
为了让docker-machine在git bash环境下好用,还需要配置bash环境和自动补完脚本:
下载docker machine源码,复制源码目录下
配置bash启动脚本(可能需要自己新建一个)
这样就可以使用docker-machine自带的自动补完功能了,很方便:
首先安装Git for Windows,获得一个用MingW64模拟出的Shell环境。这个Shell环境把Windows下的驱动器映射成根目录下的一级子目录,例如C:>就是/c。这个记下来待会儿有用。
接下来去Docker Machine发布页下载docker machine可执行文件,文件名格式为docker-machine-
uname -o-
uname -m。这里遇到一个坑: 在官方文档里举例子时docker machine的命令行操作都是”docker-machine + 子命令”形式,于是在git bash(mingw64)环境下我将下载的docker-machine-Windows-x86_64.exe重命名为docker-machine,去掉了“Windows-x86_64.exe”这导致了docker-machine不能正常运行,具体表现为如果只执行
docker-machine version,那么一切正常,能够打印版本信息,但如果执行
docker-machine create -d virtualbox default则会出现出错提示“Driver ‘virtualbox’ not found. Do you have the plugin binary accessible in your PATH?”这个出错提示就彻底把人带坑里去了,实际上这跟plugin是否在执行环境的PATH里没有毛关系。
这里的plugin是指docker-machine用于和各种物理平台打交道的一套接口驱动(driver),例如使用virtualbox创建本地的docker machine就是
-d virtualbox,这个驱动就是内置的而不是plugin。后来docker-machine要支持的平台太多了,没法都集成到docker machine binary中,于是只好做成plugin形式,放在docker-machine的执行环境中并添加到PATH变量,这样docker-machine命令运行时根据
-d的指示调用具体的driver该接口。但这里由于virtualbox的driver根本就不是插件形式,所以跟PATH就更没关系了。
出坑过程是这样的:由于检查了半天驱动发现实在是找不到有什么问题,于是在Ubuntu下安装Linux版本的docker machine,发现一切正常。再回到Windows下,在mingw64环境外——也就是直接用cmd.exe运行docker machine,由于cmd.exe要求提供后缀,否则不认为是可执行程序,所以把”.exe”加了回去。结果运行
docker-machine.exe create -d virtualbox default正常! 这才注意到是后缀的问题。
按照Unix用户的习惯,文件后缀变化是不会影响shell对文件类型的判断的,更不会影响其执行结果。但在Windows环境下使用模拟的shell环境则会出现这样的问题,这可能是docker machine一个潜在的bug。
为了让docker-machine在git bash环境下好用,还需要配置bash环境和自动补完脚本:
下载docker machine源码,复制源码目录下
contrib/completion/bash/中的脚本到任意指定目录:例如,
/etc/bash_completion.d/
配置bash启动脚本(可能需要自己新建一个)
~/.bashrc
source /etc/bash_completion.d/docker-machine-wrapper.bash source /etc/bash_completion.d/docker-machine-prompt.bash source /etc/bash_completion.d/docker-machine.bash alias docker-machine='docker-machine.exe' # DOCKER_BASE是存放docker machine相关文件的路径,包括可执行文件 export DOCKER_BASE=/e/_Share/repo/docker_machine # 添加docker-machine可执行文件的路径到PATH变量 export PATH=$PATH:$DOCKER_BASE/bin:/d/Program\ Files/Oracle/VirtualBox # 创建本地虚拟机时,使用如下路径存放虚拟机文件。默认是%UserProfile%/.docker/machine可能会塞满你的C盘 export MACHINE_STORAGE_PATH=$DOCKER_BASE/_machines # 修改命令行提示符 PS1='[\u@\h \W$(__docker_machine_ps1)]\$'
这样就可以使用docker-machine自带的自动补完功能了,很方便:
相关文章推荐
- centos6.5上安装docker
- 如何重装TCP/IP协议
- docker容器的网络信息查看
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- 使用Windows原生命令一键清空剪贴板
- 利用开源软件打造自己的全功能远程工具
- openstack kilo-with-dokcer
- Windows 8虚拟机不能全屏的解决方法
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- 微软镜像下载