1. 下载安装文件:
http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
我选择了 1.9.1 版本的,但安装后运行:docker -v (或 docker --version )却显示是:1.8.0 的版本。
2. 安装后的桌面有两个图标:
按文档上说的:
在图标上点击右键,应该能找到 settings 的选项,但我试了并没有,右键中只有和其它图标一样常见的选项。(win7 64位系统)
文档来自:https://docs.docker.com/docker-for-windows/
另外,双击第一个快速启动的图标,提示没有找到 base.exe,于是放弃了!
3. 重点:kitematic 客户端:
即桌面上的第二个图标,是 docker 的 GUI 工具,初次打开会提示登录,没有账号的话注册一个就是了。登录后的界面是这样的:
如果你比较喜欢命令行的话,直接点击左下角的 DOCKER CLI 却可进入。
接下来就是NEW+ 去搜索你要的镜像,选择下载就是了:
相当于命令行:
docker search nginxdocker pull nginx
点击 START 开始运行,相当于:
docker run -d nginx --name nginx
这时,应该可以在右边的地方看到打开的页面,但很不明显,点击一下应该会在浏览器中打开 nginx 的默认首页。
你也可以在 settings 下的 ports 的界面中看到本地的ip与端口,手动在浏览器中输入它们也可以看到效果。
四. 文件映射:
这是挺重要的,你不可能进入docker 去编写代码,最好的方式是我在自己的电脑上写代码,容器 (docker) 自己去读取它。
在命令行中添加文件映射的方法是:
在 run 的时候添加 -v 本地目录或文件:容器中的目录或文件
比如:
docker run -d --name mynignx -v /www:/var/www nginx
在网上看到很多地方都是这样写的,但你在 windows 中运行后可能是提示目录不正确或者不存在,或者不是目录之类的错误。
或者是没有错误提示,但你在主机中的www目录下添加的文件就是不生效。
原因可能有两个:
1. 本地的 目录并不是你以为的那个;
2. 容器内的目录可能不是nginx存在代码的目录。
一般第一点不太会有疑问,因为自己用的 windows 电脑目录在哪里还不清楚吗?
那第二点呢,方法之一就是去网上看一下别人给的目录,一般你第一次运行的时候也就是这么做的,有些直接给 /www 目录的,但其实我是觉得很奇怪的,一般 linux 的根目录下不会放个 www目录,一般可能在 /var/www或者是 /home/wwwroot 之类的,但毕竟这不是 linux 系统,而只是一个 nginx 的容器镜像,可能为了方便创建了呢,于是就会去试一下。
但结果是让我失望的!
当然,你可能运气比我好,你安装的那个 nginx 镜像可能刚好是这个目录。
可靠一点的方法是自己进入 nginx 容器去查看一下 nginx.conf 文件中配置的目录。
但因为我之前使用的是 boot2docker 提供的命令行客户端,无论是用:
docker exec -i mynginx bash
还是
docker attach mynignx
都无法进入容器。
前者总是提示:cannot enable tty mode on non tty input
( 据说是因为 git 客户端不支持 tty,需要使用其它客户端,比如 powershell 或 cmd 。)
把 -t 取消掉后就是一直没有反应的状态。
后者在你刷新 nginx 的首页后,控制台中会有 http 请求的页面输出。
这种情况困扰了我很久,直到我使用了 kitematic 客户端提供的 cli 工具后才发现:不是我的错,是工具的错。
(所以,不兼容的工具真的是害死人!)
好了,进入 nginx 容器后,确定了 www所在的目录,但设置后还是不生效,大约此时,WTF 会脱口而出!
但当你打开 kitematic 客户端 的 settings 下的 Vulumes 设置目录映射时,选择了一个不在用户文件下的目录,它会提示你必须需要“用户”目录下的目录!
原来如此,但之前使用命令行却不报错,也没有任何警告,这真的很不友好!
所以,选择当前用户目录下创建的 www 目录,一般是:C:\Users\Administrator 目录下创建一个 www,就应该没有问题了。
五. 仍然存在的问题:
文件映射文件了,可以在本地目录下愉快地写代码了,刷新了在浏览器中立刻看到了效果!
但我发现当我在 index.html 文件中加入中文后,神奇的问题出现了:
不是乱码,而是这个文件废了,自你加入中文后,这个文件中一切修改都会变得无效,即使你把文件中的中文删除也没有用了,必须删除这个文件后重新创建的一个,不能加入中文,原因不明,但我很想知道为什么?
另外,GUI 客户端 提示,只能进行目录映射,不能进行文件映射;但为什么我看到很多地方都写到可以映射文件?