容器介绍

Dokcer容器化技术 (新手小白也能看懂)_应用程序

容器是软件的可执行单元,其中以常见方式打包应用程序代码及其库和依赖项,以便代码可以在任何地方运行,无论是在桌面、传统 IT 还是云上。容器是一种将应用程序及其依赖项打包到一个独立、可移植的容器中的技术。这个容器包含了应用程序的所有运行时所需的组件,例如代码、运行时环境、库和系统工具。

容器的优点

1.传统应用的部署

Dokcer容器化技术 (新手小白也能看懂)_文件系统_02

2.容器化应用的部署

可以保证容器中应用和组件依赖于原始环境中一摸一样,实现了:一次封装 到处运行

Dokcer容器化技术 (新手小白也能看懂)_文件系统_03

问题:容器的本质是什么?

容器的本质是进程。容器镜像就是这个系统的“.exe”安装包


Docker跟原有的工具区别:

传统的部署模式是:安装(包管理工具胡哦合作源码包编译) ->配置->运行;
Docker的部署模式是:复制->运行
  • 1.
  • 2.


Docker对服务端开发/部署带来的变化:

方便快速部署
对于部署来说可以极大的减少部署的时间成本和人力成本
Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念是Bulid once,Run anywhere(一次构建,多次部署)
1) 标准化应用开发,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
2) 节约时间成本,快速部署和启动,VM启动一般是分钟级,docker容器启动时秒级;
3) 方便构建基于为服务架构的系统,通过服务编排,更好的松耦合
4) 节约成本,一个虚拟机至少需要几G的磁盘空间,docker容器可以减少到MB级;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.


Docker的优势:

1、交付物标注化
Docker的标准化交付物称为“镜像”,它包含了应用程序以及其所依赖的运行环境,大大简化了应用交付的模式。

2、应用隔离
Docker可以隔离不同应用程序之间的相互影响,比虚拟机开销更小,总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。

3、 一次构建,多次交付
类似于集装箱的“依次装箱 多次运输”。Docker镜像可以做到“一次构建,多次交付”。

Docker的度量:

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的可移植性,可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1) 隔离性

通过内核的命名空间来实现的,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2) 可度量性

Docker主要通过cgroups控制组来控制资源的度量和分配。

3) 可移植性

Docker利用AUFS来实现对容器的快速更新。
  AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层的概念,每一次修改都是在己有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性

安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。

容器内部之间的安全性主要是通过命名空间和cgroup来保证的。

容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。

Docker容器使用AUFS作为文件系统,有以下优势:
1) 节省存储空间
多个容器可以共享同一个基础镜像存储。

2) 快速部署

3) 升级方便
升级一个基础镜像即可影响到所有基于它的容器。需要注意已经在运行的docker容器不受影响。
  • 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.
  • 42.

容器和VM的主要区别:

表面区别:
容器占用体积小,虚拟机占用体积大
隔离性:容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。
启动速度:虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
容器使用宿主机操作系统的内核,而虚拟机使用独立的内核。Docker的局限性之一是,它只能在64位的操作系统

本质区别:
容器是被隔离的进程
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

云计算和虚拟化 和 容器化

Dokcer容器化技术 (新手小白也能看懂)_文件系统_04

Docker 架构

Docker包括三个基本概念:

镜像(Image):Docker镜像(image),相当于一个root文件系统。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行的实体。镜像可以被创建、启动、停止、删除、暂停等等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker容器使用Docker镜像来创建。

概念

说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK ( https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub( https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Dokcer容器化技术 (新手小白也能看懂)_应用程序_05

Docker Run的流程图

Dokcer容器化技术 (新手小白也能看懂)_Docker_06


Docker 为什么比VM快?

Dokcer容器化技术 (新手小白也能看懂)_应用程序_07

容器的三大组成要素:

名称空间 namespace				容器隔离(pid,net,mnt,user,hostname...)

资源限制 cgroups					资源(内存,CPU)

文件系统 overlay2(UnionFS)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.


Docker仓库:

用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker仓库也有公有和私有的概念。


镜像可以发布为不同的版本,这种机制我们称之为标签(Tag)

Tag:标签

我们一般在拉取镜像的时候在镜像名称后跟镜像的Tag