windows 中使用 docker 运行 nginx

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 nginx

docker 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 客户端 提示,只能进行目录映射,不能进行文件映射;但为什么我看到很多地方都写到可以映射文件?

转载于:https://my.oschina.net/agui1989/blog/2999784

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值