10.Docker入门学习回顾小结

【目录导览】
1.Docker入门:什么是Docker?如何安装Docker?
2.Docker入门:Docker命令
3.Docker实战:Docker部署Nginx
4.Docker实战:Docker部署Tomcat
5.Docker实战:Docker部署MySQL
6.Docker镜像:什么是Docker镜像?Docker镜像加载原理?
7.Docker容器:什么是Docker容器?
8.Docker数据卷:数据交互、数据卷、数据卷容器
9.Docker镜像制作:Commit和DockerFile
10.Docker入门学习回顾小结
11.Docker网络:基础原理&示例
12.Docker网络:容器互联之–link
13.Docker网络:容器互联之自定义网络
14.Docker网络:容器互联之不同网络间的容器互联

【什么是Docker】

  • Docker本质是一个可以使用yum下载的软件,下载完成后可以用Docker提供的指令集来操作Docker。
  • 它的主要目的/作用就是实现一个轻量级的虚拟机,实现方式是:使用Docker下载镜像(即软件安装包),然后再用Docker把镜像运行起来成为一个实际的进程,在Docker概念中,镜像运行后的进程被称为容器。
  • 那么Docker如何就能做到“实现一个轻量级虚拟机”呢?这需要从两方面回答:1.如何保证具备一个独立的系统运行空间?2.如何保证轻量?
  • 其一,每个容器创建之后,都具备一套独立的文件系统,UnionFS(联合文件系统)。具体如何实现独立的文件系统,就不在这里讨论了,它属于深入研究Docker的时候才要学习的内容。这里只需要知道Docker为每个容器都提供一个独立的文件系统即可;
  • 其二,Docker创建的众多容器,都使用当前宿主机的内核(即使用同一个内核),无需额外创建一个独立的操作系统(虚拟机就是这么做的),因此Docker会比虚拟机更轻量。
  • 那么,至此,也能明显发现Docker和虚拟机的主要区别就在于:传统虚拟机使用的是虚拟化技术(如VMware、KVM等)来实现一个物理机分成多个物理机来使用,而Docker使用的是复用同一个宿主机的内核,并为每个容器提供相对独立的文件系统来实现一个轻量级虚拟机。简单来说,Docker更轻量,虚拟机更独立、安全。

【如何使用Docker】

  • 安装完Docker后,就像当初学习Linux指令一样,学习Docker指令即可操作Docker。

【Docker中的重要概念】

  1. 镜像:镜像就是软件安装包,可以使用Docker下载,也可以自己制作,也可以通过别人传给我们;
  2. 容器:镜像运行起来以后就是容器,个人理解它为什么要被叫做容器,想想容器的特点:类似集装箱,因此具备“封闭”、“独立”、“挪动方便”、“统一包装”等特点。而镜像就像是一个模板,Docker可以下载一个又一个的模板,然后将一个模板运行成一个程序,比如:下载MySQL镜像后,可以使用这个MySQL模板来运行成多个MySQL服务,听起来是不是像我们写了一份代码,然后可以运行成多个进程,镜像和容器的关系也就是这样。只不过这多个进程是运行在不同的、相对独立的环境中的,而这个环境就被称为容器。

【Docker镜像的特点】

  • Docker镜像第一大特点:分层(可以理解成一个镜像由一个或多个部分组成)。
  • 所有的Docker镜像都起始于一个基础镜像层,当进行修改或者增加新的内容时,就会在当前镜像层之上,创建新的镜像层。
  • 比如,我们要启动一个Tomcat容器,而运行Tomcat实际上需要很多环境支持,其中主要包括:OS、JDK、Tomcat。那么一个Docker下载的Tomcat镜像就至少包括三层:OS镜像层、JDK镜像层、Tomcat镜像层。
  • 因此,可以把Docker理解成集装箱式服务,它提供的镜像就是集装箱,里面包括一个服务所需的所有环境。
  • Docker镜像第二大特点:重复利用率极高,避免下载重复镜像。
  • 假设已经下载过MySQL镜像,现在要下载Tomcat镜像,而这两个镜像都需要CentOS镜像层,那么下载Tomcat镜像的时候,就会跳过下载CentOS镜像层。
  • 实现原理就在于UnionFS(联合文件系统),简单来说,UnionFS(联合文件系统)就像github一样,对每次操作都有版本记录。

【Docker容器的特点】

  • Docker容器是一个相对独立的环境(也可以理解成一个独立的操作系统),相对于虚拟机来说更轻量,因为它不需要额外创建操作系统来作为服务的基础设施,它是通过复用当前宿主机上的内核来实现轻量级虚拟机的,说到这里,似乎也可以理解成就像多个进程复用同一个CPU一样。
  • Docker容器清除后(即关闭进程),运行的环境中的数据也就清除了,除非我们为容器挂载了数据卷。
  • 数据卷:即数据盘,Linux环境下可以理解成某个文件目录,Windows环境下可以理解成C盘、D盘;
  • 挂载:即将当前运行的容器中的某个文件路径与宿主机上的某个文件路径建立联系,然后该容器中生成的数据就会被持久化到宿主机上的某个文件路径下;

【数据卷容器】

  • 首先引入一个问题:容器运行时产生的数据会在容器中保存,那么当容器被删除时,数据就会丢失,如:运行MySQL镜像,创建MySQL容器,我们在MySQL容器中创建的数据库,生成的数据都会保存在MySQL容器中,如果MySQL容器被删除,那么数据库中的数据也就会丢失。这种情况该怎么办?
  • 解决办法:通过挂载数据卷,将数据持久化到宿主机或者别的容器。
  • 方式有三种:
  • 1.使用 -v 挂载数据卷,分成两种:具名挂载、匿名挂载;
  • 2.使用DockerFile,在构建镜像的过程中指定挂载数据卷;
  • 3.数据卷容器,将某一个容器设置成数据卷容器,然后别的容器就可以使用 --volumes-from 参数来连接,从而实现数据共享;
  • 容器之间可以做一些配置信息的传递,如集群中配置文件的广播,那么就可以通过数据卷容器(通过参数设置,可以将一个容器设置为数据卷类型的容器)来进行数据共享。
  • 数据卷容器的生命周期:一直持续到没有容器使用为止。

【DockerFIle】

  • DockerFile是用来构建Docker镜像的文件,命令参数脚本。

【Docker全流程】

10.Docker入门学习回顾小结_第1张图片

你可能感兴趣的:(Docker,docker)