一步一步学习ASP.NET 5 (七)- 快速把ASP.NET 5应用以Docker方式部署到Mac上

来源:互联网 发布:移动云计算 编辑:程序博客网 时间:2024/05/18 01:30

        编者语:工作太多,博客要慢慢来。做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 installboot2docker

          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. 之后执行
dockerrun -i -p 5004:5004 -tmvcapp 就是启动Docker的mvcapp容器了。正常状态如下图:

           

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

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

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


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

0 0