Docker学习总结
最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码。
刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处。比如:
1、Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多
2、Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
3、更快速的交付和部署、更轻松的迁移和扩展
等等……
因为我是做java开发的,我们现有的模式是在一个服务器上安装统一一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了,也很简单。。。当时我就不懂Docker有什么好处,一度以为对我们现有的模式没用。知道昨天跟其他人交流我才弄明白一个问题,那就是应用隔离与资源独立!!
这是我刚画的一个图,现在我们的模式是A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。所以要这时就要做到资源独立,一个应用一份资源,现在要做到这样只有做成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?我是觉得麻烦。如果有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!
下面是我的Dockerfile,,,,这个主要是供我自己以后回忆的。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
然后创建镜像,为了提交到私有仓库所以如此命名:
1 |
|
然后运行:
1 |
|
通过把宿主机上的项目目录挂载到容器里面的tomcat内的webapps目录下,就能做到实时更新了,不过如果是更新的.class文件则需要重启tomcat
下面这幅图是我找到的,个人感觉非常好,大家学习后可以把这幅图的流程都走通就差不多啦,至于对这幅图的理解这里我就不说了