自从博客升级之后之前的东西全都被我丢掉了,最近突然又想起了这个东西,很火,很强,所以又从垃圾堆里找到了我16年的时候写的这篇文章,保存一下
最近忙的厉害,之前因为一些需要抽出了几天研究了一下最近的容器技术-docker,在搞定了需求之后简略的将自己查找的资料归纳了一下就发了上来,有违我的初衷,因此重新编辑了一下这篇文章。
容器技术的兴起也就是这几年,论坛上说是2013年正式火起来的(国外),不过由于国内的技术更新是在是不敢让人恭维,直到如今,各大厂商才刚刚开始试运行。
我所应用测试的场景是阿里的TAE2.0,在写这篇文章的时候,阿里云正在公测docker容器技术,不过同是阿里旗下的产品tae2.0也是采用的docker容器技术。
这几年随着云的出现,各种新技术也是层出不穷,docker也是云技术的相关产物,那么他究竟是一个什么东西呢,官方的定义是“集装箱”,能够把各种各样的程序封装起来,以便于其无论搬到什么地方都可以正常的运行,要知道,在如今,分布式场景应用十分频繁,先不讲这玩意有没有别的优势,就这一条就显得尤为重要,如果有一个场景,在全国部署了上千个节点运行某个程序,现在要升级环境,总不能把这么多服务器全都配置一遍吧?当然,也可以用ghost镜像同步,就像给机房电脑装系统一样,直接分发一个做好的系统就可以了,这也不是不可以,实际上,很多地方就是这么解决的,但是这并不是一个高效的办法,有其是节点遍布全国的情况,这样做更新一次系统可能要好几天,docker的出现,可以说优化了这一个过程,它通过类似git一样的方式,将每次对容器的修改都保存下来,这样更新只更新要改变的部分,而且由于其共享了宿主的相关资源,体积进一步压缩,无论是分发还是修改都变得十分便捷,同时其独有的特性,重启一个docker容器只需要妙级别,这比正常系统启动的速度要快的多,完全可以实现热部署。
docker虽好,但是对于我们开发人员来说,上面说的这些除了让我们感觉更加烦了之外没有任何实际的好处,那么究竟是什么原因让着东西这么火的呢?性价比!由于docker并不像传统的虚拟技术哪样直接将物理机器虚拟化,完全隔离,拥有独立的os(操作系统),它是基于Linux,将可运行的一组程序打包成一个来运行,就像它的logo一样,如果把宿主的Linux比作那条鲸鱼,海洋代表着云上的那些物理机器,鲸鱼身上的集装箱就代表着一个个容器,这些容器要依托鲸鱼才不会沉下去,同时每个箱子里虽然装的东西(运行的程序组)不一样,但是对于里面运行的程序组来说,箱子里面的环境是一样的。
最后总结一下:docker技术的出现将极大的冲击传统的云服务器,但是由于国内厂商的技术问题,现在市面上运行的容器服务,价格都不太如人意,前景虽好,任重道远。
另外补充一下我在使用TAE2.0的时候遇到的问题,默认镜像就不用说了,官方封装好了的,很简单方便,就像传统那些sae之类的应用一样,哲理要说的是自定义镜像,由于在上面运行的程序需要某些比较特殊的扩展,所以不得不去编译一个自定义的镜像。 首先要做的是搜索一下docker的官方网站,从上面吧dockertools下下来,目前支持的版本有win 和 mac (开发环境是完全够用的,win下面的那个带截面的管理软件跑不起来不知道为什么,不过也不是什么太重要的东西,有个boot2就可以了)
安装好进去之后,按照tae文档上说的,将阿里的域名加进去,然后下载阿里的基础镜像,我下载的是centos3.0.0,紧接着通过交互模式进去,捣鼓好环境之后,打开另外一个ssh,连接上去(千万不要退出当前的,docker容器的生命周期一旦结束一切都会还原的),docker ps 找到正在运行的容器,用commit 保存下来,然后建立一个dockerfile,里面加上默认的启动参数(如果不加上的话,传到阿里上面,运行起来根本不知道要运行哪个入口程序)
启动参数一般是一个脚本,里面定义了一些开机要启动的东西,同时要将进程锁定(加个僵死循环,卡主就好了)
构建成功之后就可以传上去了,然后选择传上去的自定义镜像就可以运行了,由于官方只给了一个端口的映射,而这个端口我们还要给网站用,docker容器在运行时候产生的文件都会被认为是临时文件,所以什么ftp的就别想了,最好在里面再封装一个git用来做代码更新,至于更新的触发操作(入口不是还有个死循环吗?正好可以用上),一切成功之后你会发现,控制台上的操作,什么webssh便已部署之类的玩意都已经没用了,当然,镜像能够自定义了,很多操作我们也可以通过编写脚本来自动化处理,官方的web管理也就不是那么重要了,给个镜像更新、重启之类的也就够了。
Last modified on 2018-12-19