Dock

容器的发展

虚拟化技术出现以后

1、一个物理机可以部署多个app
2、每个app可以独立允许在一个vm里面
3、优点:

  • 资源池:一个物理机的资源分配到了不同的虚拟机里面
  • 容易扩展:加物理机器+虚拟机
  • 容易云华:阿里云,直接在云上创建虚拟机然后运行app就可以了,不需要底层硬件的支持

4、缺点:

  • 每一个虚拟机器都是一个完整的OS,要给其分配资源,当虚拟机数量增多时,OS本身消耗的资源势必增多
  • 开发人员的不同技术栈需要不同的开发环境;开发人员和运维人员的环境不同,可能会出现问题。

5、解决:

  • 容器打包app可以使得这个app运行在任何环境上。
  • 在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案
    在这里插入图片描述

容器的出现

  • Docker是由虚拟机优化而来的 :由于虚拟机是模仿了一台电脑硬件资源,然后上面运行很多OS,存在很多缺点,比如资源占用多,冗余步骤多,启动慢等。linux发展出来了另一种技术:Linux容器也就是容器虚拟化技术
  • Docker比虚拟机的抽象层更少。由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机上的硬件资源。因此在CPU,内存利用率上会有明显优势
  • Docker利用的是宿主机的内核,而不需要GuestOS。因此当新建一个容器时,docker不需要和虚拟机一样重新加载一个OS内核。

什么是容器

  • 对软件和其依赖的标准化打包
  • 一种虚拟化的方案
  • 应用之间相互隔离,但是共享同一个OS kernrl
  • 可以允许在很多主流OS上,但是只能运行相同或者相似内核的操作系统
  • 依赖于Linux内核特性:Namespace和Cgroups

在这里插入图片描述

Docker

什么是Docker

  • 可以将应用程序自动部署到容器
  • 解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
  • docker理念: 一次封装,到处运行【DevOps:开发自运维,一次封装,到处运行】
  • 官网:http://www.docker-cn.com/

Docker的基本组成

  • Docker Client客户端
  • Docker Daemon守护进程
    [- ] Docker是CS架构,Docker客户端向服务器端也就是守护进程发出请求,守护进程处理完所有的工作并返回结果,可以本地访问也可以远程访问
  • Docker Image镜像
  • Docker Container容器:通过镜像启动
  • Docker Register仓库
    Docker镜像

Docker三要素

1、Docker 镜像:容器基于镜像运行,镜像就像容器的源代码,保存了容器运行的各种条件。镜像是一个层叠的只读文件系统,最底层是引导文件系统bootfs,只在启动时检查。就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器
2、Docker容器:Docker利用容器独立运行的一个或者一组应用。容器是用镜像创建的运行实例。他可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。可以把容器看成是一个建议的Linux环境[包括root用户权限,进程空间,用户空间和网络空间等]和运行在其中的应用查询。容器的定义和镜像几乎一摸一样,也是一堆层的同一视角,唯一区别在于容器最上面那一层是可读可写的。
3、Docker仓库:是集中存放镜像文件的场所。仓库和仓库注册服务器是由区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签。仓库分为公开仓库和私有仓库两种形式。最大的公开仓库是DockerHub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云,网易云等等。
在这里插入图片描述

容器与镜像的关系:
p1,p2,p3就是不同的容器,他们都是从Person镜像实例化而来的。
在这里插入图片描述

容器和虚拟机的区别

  • 虚拟机技术是虚拟出一套硬件之后,在其上运行了一个完整的OS,在该系统上运行所需的进程
  • 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,也没有进行硬件虚拟。因此容器要比传统虚拟机更加轻便
  • 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源

在这里插入图片描述

  • Linux容器并不是模拟一个完整的操作系统,而是对进程进行隔离。容器将软件运行所需的所有资源打包到一个隔离的容器中。容器和虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此变得高效轻量并保证部署在任何环境中的软件都能运行。也就是值打包了内核+库资源+设置+软件:
    在这里插入图片描述

虚拟化和容器可以一起使用

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/83349618