03 Docker核心技术

1. VM Vs. Docker

应用在Docker中跑起来是什么样的?

03 Docker核心技术_第1张图片
虚拟机和容器的结构对比

虚拟机下,是硬件→操作系统→Hypervisor→虚拟机操作系统→配置虚拟机依赖环境→安装App
容器时代,硬件→操作系统→Docker Engine→运行所需要的依赖环境→安装App
容器的运行不需要安装虚拟机的操作系统,是比虚拟机更加轻量的虚拟化技术。

03 Docker核心技术_第2张图片
Docker和虚拟机对比的详细信息

Docker容器共用一个Kernel,而虚拟机使用自己操作系统的Kernel→虚拟机拥有比Docker更好的隔离性。
Docker有更多的优势:

  • 虚拟机操作系统的存在,占用了更多的计算资源;
  • 空间占用上,虚拟机是GB级,Docker可以小至几MB;
  • Docker的启动时间更快(毫秒级);
  • Docker有更强的快速扩展能力、跨平台迁移能力

2. Docker的重要概念:容器、镜像、仓库

  • 容器:与虚拟机一样都是承载相关应用的载体
  • 镜像:当容器安装了特定的应用之后,就可以将其打包成镜像。需要应用的时候,将镜像下载下来,就可以快速运行起来。
  • 仓库:存储镜像的地方。

3. Docker容器的使用

03 Docker核心技术_第3张图片
Docker容器的状态

三种状态:Running、Stopped和Paused,与虚拟机的运行、关机、挂起状态相似。

4. Docker镜像

03 Docker核心技术_第4张图片
镜像的生成

当把镜像下载到本地之后,可以使用Docker run的命令,启动一个基于这个镜像的容器。对容器修改之后,可以将其commit回去,生成一个新版本的镜像。

03 Docker核心技术_第5张图片
镜像的层级结构

Docker镜像是一种层级结构的文件系统,最上层往往是可写的,存储了已经运行的容器的修改信息当对容器进行kill的时候,修改信息就会被删掉。当容器被commit成镜像的时候,这些修改信息也会保存成新的层级。

镜像的生成除了使用commit之外,还可以使用Dockerfile(更标准、更常用)。这种方式生成出来的镜像更加干净、透明。

5. Docker仓库

03 Docker核心技术_第6张图片
Dockerhub和私有仓库

Dockerhub是Docker的官方仓库,存放着各种官方的标准镜像。可以使用pull命令直接从Dockerhub中下载镜像到本地进行使用。

还可以构建自己的镜像仓库,用于存放常用的镜像以及企业自定义的应用镜像。可以从私有仓库中下载、上传镜像。

6. Docker核心技术:Build, Ship, Run

03 Docker核心技术_第7张图片
Docker的主要操作

首先利用Dockerfile将组建Build成为一个镜像,然后将镜像上传到企业自定义的镜像仓库中。

当我们需要镜像的时候,可以从任何地方连接到镜像仓库中,将镜像下载到本地,然后一键将其Run起来。
这就是"Build once, run everywhere":一次构建,任何地方都能运行。

7. Docker数据卷

03 Docker核心技术_第8张图片
保存Docker数据

容器一旦关闭,修改信息就会丢失,这对于一些有状态的应用来说往往是不可接受的。
可以通过给文件挂载文件目录或者存储来解决,从而可以存储容器运行中的一些数据。这样,当容器崩溃,重启容器的时候,依然可以访问之前容器存储下来的一些数据。

这种方式也可以解决一些主机和容器之间的数据访问。

8. Docker网络

实现容器之间的通信、容器与外部之间的通信。
四种模式:

  • Bridged:表示容器可以与主机上的容器,主机上的外部进行通信
  • Host:表示容器只能与主机通信
  • Container:表示容器只能与容器通信
  • None:没有网络连接

比较常用的是Birdged模式。主机会生成一个Docker网桥,每个容器可以拥有自己的虚拟网卡,容器网卡通过网桥连接到主机的物理网卡,与外部进行通信。

你可能感兴趣的:(03 Docker核心技术)