虚拟化分类:

    主机级虚拟化

    容器虚拟化

虚拟化核心技术:

    NameSpek(命名空间);

          作用:内容隔离

    Cgroup(控制组);

          作用:资源分割和控制

    Chroot(root切换);

          作用:root切换

    LXC(Linux 虚拟机实现)

          作用:Linux虚拟化的具体实现。

Docker简介

    Docker只是Linux内核虚拟化的一个管理应用软件,实际上使用的核心技术还是Linux内核虚拟化相关技术。

    Docker分为企业版(Docker-EE)和社区版(Docker-CE)

    Docker引擎过渡史: LXC>Libcontainer>runC

   

Docker-Registry

    Docker-Registry是Docker的镜像管理仓库,和yum类似,你可以使用Docker官方提供的公共Docker-Hub,也可以自己搭建私有Registry。

    仓库分为顶级仓库和组织仓库,如Nginx、CentOS、Ubuntu等就是顶级仓库,使用应用名称命名;组织仓库是个人或者企业注册生成的仓库,格式为:个人标识符/镜像名称,如:aliyun/nginx:laster;baidu/tomcat:V2


Docker-Images

   Container的镜像文件,一个唯一的镜像文件应当由镜像名和标签构成,格式为:镜像名:标签,如:nginx:V2;nginx:V3;tomcat:laster

   Image是采用Union FS技术,将其设计为分层存储的架构,前一层是后一层的基础,最底层为bootfs(用于系统引导的文件系统,提供系统内核,容器启动完成后会被卸载以节约资源),其次为rootfs(由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂在一个“可写”层)。

image.png

Images-tags

   作用是为了区分相同应用镜像的不同版本


镜像加速

   因为国家防火墙的原因,从Docker-Hub下载镜像文件速度很慢并且容易出现网络连接的错误,所以国内就有了镜像加速,国内有阿里云等云服务商提供加速服务。


Container

   Image是静态的文件,Container是根据Image生成的容器进程 ,镜像使用的是分层存储,容器也是如此,每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。


Volume

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用

  • 对 数据卷 的修改会立马生效

  • 对 数据卷 的更新,不会影响镜像

  • 数据卷 默认会一直存在,即使容器被删除


挂载主机目录

    除了使用Volume,我们还可以将主机目录挂载到Container中,用来存放需要持久化的数据。


Network

    如果你用过VMware就会知道VMware安装后会创建出几个虚拟的网卡,用来虚拟机之间、虚拟机和主机之间的通讯。Docker一样,在安装的时候会默认创建一个网桥,用来进行网络通讯。