在 Windows 下使用 boot2docker 搭建 docker 开发环境

2015-06-03 • Linux 笔记 • #windows #docker

很久以前研究过一会儿 docker ,当时觉得只是一个轻量级的虚拟机包装而已,没觉得有多大用。

最近发现这玩意还蛮好玩的,但是又懒得翻以前的虚拟机了,于是发现一个叫 boot2docker - 国内下载(via DaoCloud) 的东西。官方宣称是“It runs completely from RAM, weighs ~27MB and boots in ~5s (YMMV).”。

下载回来的安装包有 100 多 MB,当时在想说好的 27MB 呢,结果发现包里有个 VirtualBox 和一个 msysgit ……简直坑。

如果你的机器上没有这俩玩意,那就放心大胆的直接安装吧。它会帮你把各种琐事配置好,官方的指导文档里也写的十分详细。

如果你的系统里有 VirtualBox 了,那也就直接安装,它会自动识别系统上的 vbox 的,不过你最好先测试一下你的 Host-only 网卡是否正常。

那么重点来了:如果你的系统里有 msysgit,并且还有其它的 GNU 工具链,比如我这种装了 Gow 的人,那么其实这个玩意是有坑的。

要说这个坑,首先要谈一谈 boot2docker 的工作原理。 boot2docker 由 VirualBox 里的一个叫 boot2docker 的虚拟机、一个用来管理 Virual Box 里的虚拟机的工具 boot2docker.exe 和 docker 本体 docker.exe 组成。

当你执行 sh start.sh 的时候,它首先调用 boot2docker init 来创建这个虚拟机(如果已经存在则跳过);其次将该虚拟机启动;最后使用 boot2docker ip 来获取虚拟机的 ip 地址并设置环境变量。

boot2docker ip 这个命令,是调用系统中的 ssh 来获取 ip 地址的。它在 init 的时候,将虚拟机的 22 端口转发到宿主机的 2022 端口,并运行 ssh -p 2022 docker@localhost ip addr show dev eth1 来获取 ip 地址(详细的命令可运行 boot2doker -v ip 来显示)。而 Gow 里的 ssh 指令,则是调用了 PuTTY 的 plink.exe

那么问题来了:plink.exe 根本不支持 -p 语法,也不支持它所使用的 -o 等参数。

所以,如果你装了 Gow,请一定把 msys git 的路径加到 PATH 的最前方……起码是在 Gow 的前面,这样就不会被坑了。

处理完这些乱七八糟的事情之后,运行 boot2docker status 即可看到你的虚拟机的当前状态。下次使用时,只需执行 sh start.sh 即可自动配置好环境变量并且开启 git bash。在这个 git bash 里,你就可以执行你的 docker 指令了~

如果不想用 git bash,那么执行 boot2docker shellinit ,也可以看到应设置的环境变量,如:

export DOCKER_HOST=tcp://192.168.111.222:2376
export DOCKER_CERT_PATH='C:\Users\oott123\.boot2docker\certs\boot2docker-vm'
export DOCKER_TLS_VERIFY=1

此时,用 set 将这些环境变量设置好,即可在 cmd 中使用 docker 来管理 docker 容器了,如:

set DOCKER_HOST=tcp://192.168.111.222:2376
set DOCKER_CERT_PATH=C:\Users\oott123\.boot2docker\certs\boot2docker-vm
set DOCKER_TLS_VERIFY=1

试试 docker info 能不能显示出虚拟机的信息来吧。

Cmder / Listary 搭配使用的若干技巧

2015-02-17 • M$ 大法 • #windows #cmder #listary

Cmder 是一个在 Windows 下用起来很舒服的控制台。以下引自官方网站,请自行阅读。

Cmder is a software package created out of pure frustration over the
absence of nice console emulators on Windows. It is based on amazing
software, and spiced up with the Monokai color scheme and a custom
prompt layout. Looking sexy from the start.

确切的说来,Cmder 是基于 ConEmu 定制的。我这里要说的,主要是 Cmder 如何和其它软件进行集成。

一、 免 UAC 以管理员权限启动 Cmder (或者任何程序)

这里用到的所谓 “免 UAC” 其实是利用 Windows 的计划任务功能。在“控制面板”中搜索“计划任务”打开计划任务的控制台,新建一个任务。路径选择你的 Cmder.exe(新版本)或者 Cmder.bat(老版本),并选上“使用最高权限运行”。触发器可以全都删掉,最后得到的结果大概如下图:

常规标签

然后记住图中的“位置”和“名称”。接着,打开一个非管理员的命令行,执行:

C:\WINDOWS\system32\schtasks.EXE /run /tn "\Best33.com\Cmder"

其中 /tn 后的参数则是“位置”和“名称”用\拼合的结果。

二、在任何地方打开你的 Cmder

这里我的 Cmder 是一个比较老的版本,1.1 吧。新版本很简单,用.\cmder.exe /REGISTER ALL注册就可以了。

老版本的话比较麻烦。我是这么做的:

修改 vendor\init.bat 加入以下内容到最尾部:

@IF "%~1"=="" GOTO endparse
@cd /D %1
:endparse

然后就可以用命令行:ConEmu.exe /Icon <CmderPath>\icons\cmder.ico /Title Cmder /LoadCfgFile <CmderPath>\vendor\conemu-maximus5\ConEmu.xml /Single /cmd cmd.exe /k <CmderPath>\vendor\init.bat "%path%"来启动 Cmder ,其中 %path% 则是你要启动的路径,而<CmderPath>则是你 Cmder 的路径。。

当然,说到 listary ,就不得不提它的智能菜单。我实现了一个这样的功能,双击资源管理器的空白处的菜单中增加了“在这里打开 Cmder 选项”,还是十分的好用的。

双击快速菜单

具体方法,则是在 选项->菜单->智能命令 中,点击“+”->启动应用程序,在“路径”中输入 ConEmu 的路径,大概是<CmderPath>\vendor\conemu-maximus5\ConEmu.exe;“参数”中输入/Icon <CmderPath>\icons\cmder.ico /Title Cmder /LoadCfgFile <CmderPath>\vendor\conemu-maximus5\ConEmu.xml /Single /cmd cmd.exe /k <CmderPath>\vendor\init.bat "%path%"

Listary 设置

附注

由于配置这一系列的东西的时间比较早,现在才整理出来,不免有些杂乱。如果有任何问题可以直接在下面留言。

Win8下的鼠标滚轮穿透软件 AlwaysMouseWheel

2013-09-27 • Web 万象 • #windows #鼠标滚轮

新装了Windows8.1,虽然是没有激活但也是能够正常使用的。还好主要生产力工具FireFox和Sublime Text 2都是绿色版,没有多少折腾就进入了正常的状态。

嗯,但是换了系统总是会有些纠结的,比如我就发现我一直使用的MouseInc的鼠标滚轮穿透功能失效了。嗯……也许不是一个普遍现象,因为没有Google到相关的feedback。

于是想着再找另外一个轮子,反正这样的轮子已经造过很多了。找到了一款叫AlwaysMouseWheel的软件。嗯,只有这么一个功能,实测好用。

对了,你可以选择官方下载,或者微云下载

友情链接