开始
在windows下部署nodejs开发环境着实遍地坑,每遇到一个问题都要去google原因再试图解决。而且如果你想把你写好的应用交给别人跑跑看,他可能同样需要折腾很久才能真正在他的环境下运行起来。被坑了好些时日最终还是放弃,转战Docker。
文章开头先明确一下我们希望实现的效果:
1、依然在Windows下编辑源代码,在Docker容器中运行代码,最后在Windows的浏览器中看到运行结果,方便后续debug。
2、可以将我开发完成的程序和运行环境一起打包制作成Docker的image,移交image给小伙伴运行或者直接发布到服务器上。
安装与启动
Docker引擎核心是运行在Linux操作系统上的Linux容器。所以要在Windows上使用Docker容器,先要提供Linux运行环境。
去Docker官网下载msi安装程序,若你的系统版本(例如64bit Windows 10 Pro, Enterprise and Education)支持Hyper-V虚拟技术,那么不需要使用额外的虚拟机(VirtualBox),安装程序会自动为你安装完成Docker(Docker for Windows)。
The Hyper-V package must be enabled for Docker for Windows to work. The Docker for Windows installer will enable it for you, if needed. (This requires a reboot). If your system does not satisfy these requirements, you can install Docker Toolbox, which uses Oracle Virtual Box instead of Hyper-V.
若不能使用Hyper-V虚拟技术,Docker项目组也提供了Docker ToolBox工具,可以很方便的在Windows环境下安装Docker。
更详细内容参考Docker官方文档-toolbox。
本文中的执行系统为Win7,故使用Docker toolbox。
安装过程会附带安装Oracle VM VirtualBox虚拟机,如下图:
Kitematic为Docker的GUI管理工具,打开Docker Terminal可以快速地启动Docker。
可以发现此时Docker给default machine分配了一个IP:192.168.99.100。我们可以直接在该终端下执行Docker命令。
由于在Windows中运行Docker多加了一层虚拟机,有几个概念需要了解:
Docker主机指的是Linux虚拟机,也就是说,此时Docker主机(即Linux虚拟机)的IP地址为192.168.99.100。 与一般的ssh访问虚拟机一样,我们也可以通过该IP用ssh登录到Docker主机去执行命令。(用户名:docker;密码:tcuser) 如要用root权限去执行Linux命令(如mount),则需要打开VirtualBox。搭建Image
新安装好的Docker主机中没有任何image(docker images 查看已有的image)。运行node应用需要搭建node环境镜像,可以从Docker Hub上pull轻量级的Linux镜像作为基础镜像(如CentOS),在上面手动安装node;也可以直接pull一个已安装了node的镜像(docker pull 拉取镜像)。从Docker Hub下载镜像可能非常慢,可以借助国内的云服务商下载(如daocloud.io)。
现在假设我们pull了一个不包含node环境的CentOS镜像。
$ docker run -it centos bash
启动一个容器,并进入容器的bash进行交互式操作。采用与CentOS下一样的方式安装node。安装完成后exit退出容器。请放心,如果不使用docker rm或者docker run时不增加--rm参数,即使退出容器,容器本身及其中的修改不会消失。可以用docker ps -a查看所有容器,docker ps查看正在运行的容器。
新闻热点
疑难解答
图片精选