docker实现应用虚拟化部署,自由搬迁
需求描述:最近我在美国的虚拟机因为贸易战ip无法访问,同时因为我的python应用是两年前写的python2.6,明年停止更新了,必须把升级到Python3.x。大家都知道系统配置、python各个包环境配置等是极其麻烦的,为了避免以后应用搬家带来的环境部署痛苦,我希望把我的应用最好“一键部署”,自由迁移。
解决方案:经过比较,我决定采用docker虚拟化的方式来解决。思路是这样的,把操作系统作为一个image,然后把需要用到的python3各种包安装好,最后把整个容器打包部署到购买的虚拟机中。以后迁移,只需要拷贝镜像既可。
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的部署任务,在Docker容器的处理下,只需要数秒就能完成。
Docker和vmware的虚拟化方式不一样,vmware是系统级别的虚拟化,docker是应用级别的虚拟化,额外消耗的资源很少。更多好处大家可以自行上网查询。
步骤:
1、在vmware的linux虚拟机中安装docker,docker介绍可以参考这个文章https://baike.baidu.com/item/Docker/13344470?fr=aladdin
2、下载centos7镜像,目前镜像非常多,mysql,hadoop,mongodb等等,我现在如果临时学习用一些开发软件都懒得安装了(安装起来需要很多配套东西、麻烦),直接下载一个拿来即用。image资源可以到这里查https://hub.docker.com/search/?type=image
3、进入容器,把python2升级到python3,以及安装各种包,实在是太麻烦了,足足安装了一个周末。同时因为是容器需要解决访问主机ip、cron等问题。
4、我只是把容器当单纯运行环境,为了方便程序维护和日志查看,我把程序和日志放在宿主机上,做目录映射即可。
5、所有程序修改为python3版本
6、容器cron自动运行一个晚上,一切正常,可以打包部署上线了。
借鉴意义:
1、试想一下,我们一个很复杂的产品,如何能够在众多客户中快速部署呢?docker能够实现从开发、测试、生产等多个环境之间的快速流转,而且还能够保持环境一致,减轻环境迁移的成本,这对我们产品化输出有很大的借鉴意义。
2、docker能够实现不同级别的虚拟化,大到一个操作系统小到某个应用,可以下载一个公共的,也可以再编辑或自己编写,非常灵活,而且额外占用资源少。
3、docker对于需要快速部署大量重复应用很有帮助,例如需要部署100套mysql,最快速的方法就是采用docker
4、故障安全隔离,docker相互之间不影响。