虚拟化分类:html
主机级虚拟化nginx
容器虚拟化git
虚拟化核心技术:web
NameSpek(命名空间);docker
做用:内容隔离tomcat
Cgroup(控制组);网络
做用:资源分割和控制架构
Chroot(root切换);ide
做用: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(由内核挂载为“只读”模式,然后经过“联合挂载”技术额外挂在一个“可写”层)。
Images-tags
做用是为了区分相同应用镜像的不一样版本
镜像加速
由于国家防火墙的缘由,从Docker-Hub下载镜像文件速度很慢而且容易出现网络链接的错误,因此国内就有了镜像加速,国内有阿里云等云服务商提供加速服务。
Container
Image是静态的文件,Container是根据Image生成的容器进程 ,镜像使用的是分层存储,容器也是如此,每个容器运行时,是以镜像为基础层,在其上建立一个当前容器的存储层,咱们能够称这个为容器运行时读写而准备的存储层为容器存储层。容器存储层的生存周期和容器同样,容器消亡时,容器存储层也随之消亡。所以,任何保存于容器存储层的信息都会随容器删除而丢失。按照 Docker 最佳实践的要求,容器不该该向其存储层内写入任何数据,容器存储层要保持无状态化。全部的文件写入操做,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
Volume
数据卷
是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,能够提供不少有用的特性:
数据卷
能够在容器之间共享和重用
对 数据卷
的修改会立马生效
对 数据卷
的更新,不会影响镜像
数据卷
默认会一直存在,即便容器被删除
挂载主机目录
除了使用Volume,咱们还能够将主机目录挂载到Container中,用来存放须要持久化的数据。
Network
若是你用过VMware就会知道VMware安装后会建立出几个虚拟的网卡,用来虚拟机之间、虚拟机和主机之间的通信。Docker同样,在安装的时候会默认建立一个网桥,用来进行网络通信。