简介docker

Docker是基于Go语言开发的,解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

什么是虚拟化?

虚拟化 就是通过某种方式隐藏底层物理硬件的过程,从而让多个操作系统可以透明地使用和共享它。这种架构的另一个更常见的名称是平台虚拟化。在典型的分层架构中,提供平台虚拟化的层称为 _hypervisor_[‘haɪpəvaɪzə](有时称为虚拟机管理程序 或 VMM)。

hypevisor相当于把所有的硬件设备变成一个函数接口,使所有来宾操作系统可以方便的调用
image.png

虚拟机:

虚拟机的结构图:
image.png

基础设施(Infrastructure):它可以是你的个人电脑,数据中心的服务器,或者是云主机。
主操作系统(Host Operating System)。你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
虚拟机管理系统(Hypervisor)。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V以及支持Linux的KVM。类型2的Hypervisor有VirtualBox和VMWare。
从操作系统(Guest Operating System)。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个从操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
各种依赖。每一个从操作系统都需要安装许多依赖。如果你的的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems;如果使用其他编程语言,比如Python或者Node.js,都会需要安装对应的依赖库。
应用。安装依赖之后,就可以在各个从操作系统分别运行应用了,这样各个应用就是相互隔离的。


缺点:
1 资源占用多
2 冗余步骤多
3 启动慢
1.传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
2.容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
3.每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

Docker:
image.png

优点:
1、docker 比虚拟机有更少的抽象层,docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接试用的都是实际物理机的硬件资源。
2、docker利用的是宿主机的内核,而不需要加载操作系统的OS内核,新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,进而避免引寻、加载操作系统内核返回等比较费时费资源的过程。(虚拟机软件需要加载OS,返回新建的过程时分钟级别的,docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟)
image.png

总结

细项 Docker容器 虚拟机
操作系统 与宿主机共享OS 宿主机上运行一个虚拟的OS
存储大小 镜像小,便于存储和传输 镜像大I(vmdk,vdi)
运行性能 几乎没有什么额外的损失 操作系统需要运行额外的CPU性能消耗
移植性 轻便、灵活、适应于Linux 笨重,与虚拟化的技术耦合度高
硬件亲和性 面向软件开发者 面向硬件开发者

原文链接:https://blog.csdn.net/Mr_Robot123/article/details/114257680