理解Docker

前言

最近了解了下什么是Docker,本篇也只是介绍下Docker的作用,对其有个了解,关于Docker的安装,运用什么的可以找其它的详细教程,以下几个是我个人为以后具体学习Docker保存的资料:

docker中文网站教程

docker菜鸟教程

Docker学习笔记

找资料在网上看到最多的是Docker的好处。比如:

1、Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多

2、Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。

3、Web 应用的自动化打包和发布,用于自动化测试和持续集成、发布。

等等……

我对于服务器部署的了解是:一个服务器上统一安装一个jdk,运行多个tomcat,每个tomcat里面一个java应用,大家也知道tomcat不用安装,当我们项目要迁徙的时候也只需要把整个tomcat打包然后在另一台服务器上解压就ok了!对于Docker也只是知道是个容器,不知道具体是用来干啥的,但是我现在接触的项目—Git、Maven、Tomcat、Jenkins、Shell、Docker构建的持续集成环境。所以在这里我首先来了解下Docker,怎么构建持续集成环境,给自己以后实际操作留个地址:

最佳实战Docker持续集成图文详解

「Jenkins+Git+Maven+Shell+Tomcat持续集成」经典教程

jenkins配置应用自动部署到docker

注:第一个是基于Docker的,第二个好像没用到Docker。


从网上找了张图,个人觉得讲得比较清楚明白:

这里写图片描述

以前我们的模式是A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。所以要这时就要做到资源独立,一个应用一份资源,现在要做到这样只有做成A2那样,一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,配环境等等,麻烦不?如果有了Docker,就是A3 的模式,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!

在这里提及下持续集成的简要思路,假设我们JAVA项目的名称为hello。简要的技术思路如下。

这里写图片描述

在具体学习Docker的时候再结合下面这张图来理解就明白多了。另外了解到Docker提供镜像管理和容器。

这里写图片描述