Docker 介绍
Docker 是开源的一个基于轻量级虚拟化技术的容器引擎项目。它通过分层镜像标准化和内核虚拟化技术,使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。云服务是基于操作系统级别的隔离,在同一台机器上虚拟多个主机,而docker的实现是将操作系统环境和应用进行移植。
Docker中几个重要概念
1. 镜像(Image)
原理: 镜像是一堆只读层(read-only layer)的统一视角。
这些只读层重叠到一起构成了Docker的内部实现细节,在主机(运行Docker的机器)的文件系统可以访问。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供一个统一的视角,这样可以隐藏多层的存在,在用户的角度看来,只存在一个文件系统。在一个运行的容器内部,这些层次是不可见的,只有一个只读的统一文件系统。
作用: 镜像可以用来创建Docker容器,镜像和容器的关系类似于类和对象的关系。一个镜像可以包含一个完整的操作系统环境和用户所需要的其它应用程序。Docker的镜像是只读的,一个镜像可以创建多个容器。
2. 容器(Container)
原理: 容器的定义和镜像类似,也是一堆层次的统一视角,区别在于容器的最上面那一层是可读可写的。
作用: Docker利用容器来开发、运行应用,容器是镜像创建的实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证具有一个安全的平台。
容器=镜像+可读层
3. 运行态容器(Running Container)
定义: 一个可读写的统一文件系统+隔离的进程空间和包含其中的进程。
4. 仓库(Repository)
定义: 仓库是集中存放镜像文件的场所
每个仓库中包含了多个镜像,每个镜像有不同的标签(Tag)。
Windows 容器 和 Linux 容器结构
定义: 容器是隔离资源,可移植的运行时环境。总的来说,容器就是一个隔离的位置,提供一个虚拟化的环境,应用程序可以在其中运行,而不会影响系统的其它部分,并且系统也不会影响该应用程序。
Windows 容器类型
- Host OS: 主机操作系统,Docker守护进程在其上运行
- Base OS Container: 基础操作系统镜像,容器可以直接与Host OS共享内核,不必要使用此基础镜像
- Kernal: 主机操作系统内核
1. windows server container
通过进程和命名空间隔离技术提供应用程序隔离。Windows Server 容器与容器主机(Host OS)和该主机上运行的所有容器共享内核。
2. Hyper-V container
通过在高度优化的虚拟机中运行每个容器,在由Windows Server 容器提供的隔离上扩展。在此配置中,容器主机的内核不与其他Hyper-V容器共享。
此图片很好的概述了各个部件相互之间的关系,多个只读的镜像包括基础操作系统镜像和应用程序镜像为容器的运行提供依赖环境,sandbox 中可以进行读写操作
Linux 容器
本文摘自
http://dockone.io/article/783
https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/
http://www.floydhilton.com/docker/2017/03/31/Docker-ContainerHost-vs-ContainerOS-Linux-Windows.html