快速把ASP.NET 5应用以Docker方式部署到Mac上

编者语:工作太多,博客要慢慢来。做IT真的不容易,短短几天世界也变了,新的Windows 10 10049带来了Project Spartan.而新的Windows 10 for Phone的新Build也很快会出现。还有两个好消息,一个是连任了Microsoft MVP ,第二个作为一个果粉下周将会是一个激动的日子,新的MacBook可以买到了我要高配的太空灰色。普天同庆的日子,我和大家聊个比较时髦的问题-Docker.

什么是Docker ?

Docker是一个开源的应用容器引擎,可以把应用和应用依赖的包封装到一个容器当中,然后发布到任意的Linux机器上,也可以实现虚拟化。如果你做iOS App,会发现Docker中的容器就是一个沙箱,容器之间不会有任何接口。换句话说,Docker应用就是一个App.Docker的优点是没有性能开销,可以很方便地部署到服务器和数据中心.更重要一点是Docker不依赖于任何语言,框架或者操作系统,这对企业向云端迁移有很大的意义。

了解更多关于Docker 可以访问 Docker 官网Docker的百度百科

Mac上的Docker

由于Docker是基于Linux的内核,在Mac上是不能直接使用Docker。Mac上运行Docker你需要安装Boot2Docker应用。Boot2Docker 包含了VirtualBox的虚拟机,Docker以及boot2docker管理工具。看看下图传统Linux的Docker和Mac上的Docker对比

在传统的Linux上Docker客户端,Docker,Docker Daemon,和相关容器直接运行在localhost上。而Mac ,由于通过Boot2Docker所以Docker容器是分配到所启用的虚拟机的IP地址上。

更多内容可以看官方关于Boot2Docker的详细文档(点击进入)

在Mac上安装Boot2Docker

在Mac上安装你可以用安装包,也可以用命令行。(命令行由于放在AWS服务器上,在正常条件下是访问不了的。所以建议用安装包)

1.安装包方式

(点击进入下载pkg) .下载boot2docker.pkg包后,一步步安装即可。

2.命令行

前提需要安装Homebrew环境(点击打开链接

1)你需要保证你的brew版本是最新的 所以先运行 brew update

2) 通过brew安装Boot2Docker 对应命令是brew install boot2docker

3) 初始化你的Boot2Docker ,这个命令会去下载iso虚拟机镜像(这里国内貌似没有佛跳墙是不能使用的,大家要注意) 对应命令是 boot2docker init

4) 安装成功后你就可以通过 boot2docker up 去启动,

如果你是图形界面的当然直接点击

5) 你可以通过 docker info 去查看你的docker信息

创建ASP.NET 的镜像

为了让容器更好地载入ASP.NET 5的运行环境,我们做一个Image给在Docker的ASP.NET 5 app重用。首先你去Github上下载对应的Dockfile(https://github.com/aspnet/aspnet-docker) 。并找到你对应ASP.NET 5的Dockfile,这里我的对应版本是ASP.NET 5 beta 3. 从这个脚本可以看到,这里的镜像是配置一个Mono运行时,还有ASP.NET 5 beta 3的支持,还有一个在Linux运行ASP.NET 5的相关库,如支持Kestrel运行的libuv.

通过命令行方式定位到和Dockerfile相同的文件夹内,运行 docker build -t aspnet . (千万不要少了.) 这时就会为images加载好需要的文件。

稍等片刻,就已经完成了。再次运行 docker images 你可以看到有asp.net 和mono 的两个images.

ASP.NET 5 running in Docker

1.在本地创建ASP.NET 5 的应用。 可参考我的文章一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目

2.配置好对应的Dockerfile ,这个Dockerfile 必须要与你的项目在同级目录下。这里其实是对在本地的应用进行封装,并添加到 Docker上的脚本,这里涉及引入之前的ASP.NET 5 images 并把它和应用MyDockerDemo一起封装到MyDockerApp中,之后 执行脚本还原依 赖的库 ,并设置好5004端口等操作

3. 之后定位到Dockerfile 和应用的跟目录,之后执行 docker build -t mvcapp . (千万不要少了.) 这里主要是为Docker创建一个 mvcapp的容器。执行docker images 可以看到如下图的结果 4. 之后执行 docker run - i - p 5004:5004 - t mvcapp 就是启动Docker的mvcapp容器了。正常状态如下图:

5. 如何访问?由于Boot2Docker是通过虚拟机分配地址的,所以你先要查看你的Boot2Docker的真实地址,执行 boo2docker ip 查

看。之后就帮上 ip+端口即可访问。

6.如果你想使用本地的IP你需要设定 VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port5004,tcp,,5004,,5004"; 即可。

好吧相信你按住上面步骤已经可以很轻松地掌握在Mac上把应用快速部署到Dock上了吧。大笑