未经博主允许,禁止转载本博客任何内容,如需转载或内容雷同请留言,谢谢合作,不胜感激!

Docker系列(一)几个重要概念

docker 毛竹、 968℃ 0评论

docker是什么?


传统虚拟化: 有自己的操作系统,一旦开机,预分配给它的资源将全被占用。包括:应用、必要的二进制和库,及完整的用户操作系统。 容器技术: 容器技术是不依赖宿主机,拥有独立运行环境的可执行程序,启动的容器为一次性的程序,若出了bug或需要更新,简单的将容器和镜像删除,使用最新镜像启动即可。 区别: 从结构来看,图1虚拟机的GuestOS层和Hypervisor层在docker已经被Docker Engine层所取代,在这里我们 需要知道的是GuestOS是虚拟机安装的操作系统,是一个完整的系统内核,另外,Hypervisor可以理解为一个硬件 虚拟化平台,它在Host OS层是以内核驱动状态存在的;虚拟机实现资源隔离的方式就是利用独立的Guest OS,并Hypervisor虚拟化CPU,内存,IO等设备实现; 对比虚拟机实现资源和环境隔离的方案,docker显然就是简练的很多,Docker Engine可以看成linux的namespace,cgroup,镜像管理文件系统操作的封装,docker并没有和虚拟机一样利用一个完全独立的Guest OS实现环境隔离,利用的是目前linux内核本身支持的容器方式实现的资源和环境隔离,简单的来说,docker就是利用namespace实现的系统环境的隔离,利用cgroup实现资源限制;利用镜像实现根环境的的隔离

images

一堆含有启动容器的只读层的文件(),类似于iso镜像文件,镜像不包含任何动态数据,其内容在构建之后也不会被改变。可以看做是一个特殊的文件系统。为什么说它是轻量的呢?
    当你改变了一个Docker镜像,比如升级某程序到新版本,一个新的层会被创建,不用替换整个原先的镜像或重新创建,只是一个新的层被添加而已,层使得分发Docker镜像变得简单和快速。
    采用分层构建机制,最底层为boots,其之为rootfs
        bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源
        rootfs:位于bootis之上,表现为docker容器的根文件系统
            传统模式中,系统启动之时,内核挂载roots时会首先将其挂载为“只读”模式,完整性自检完成后将其重新挂载为读写模式
            docker中, rootis由内核挂载为"只读”模式,而后通过"联合挂载"技术额外挂载一个"可写"层;
        位于下层的镜像称为父镜像(parent image),最底层的称为基础镜像(baseimage)
        最上层为“可读写”层,其下的均为“只读"层

container:

隔离与宿主机之上的有生命周期的可执行程序或进程,在镜像的最上面多了一层可读可写层,Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。
    每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分。

docker Registry(仓库)

Docker仓库是集中存放镜像文件的场所。镜像构建完成后,可以很容易的在当前宿主上运行。
    但是, 如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry(仓库注册服务器)就是这样的服务。
    有时候会把仓库(Repository)和仓库注册服务器(Registry)混为一谈,并不严格区分。
    Docker 仓库也有公有和私有的概念。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。
    实际上,一个 Docker Registry 中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag),每个标签对应着一个镜像。
docker架构图

docker各组件如何进行工作?

容器启动过程如下:
    Docker 客户端执行 docker run 命令。
    Docker Daemon 发现本地没有 hello-world 镜像。
    Daemon 从 Docker Hub 下载镜像。
    下载完成,镜像 hello-world 被保存到本地。
    Docker Daemon 启动容器。

转载请注明:黑夜 » Docker系列(一)几个重要概念

喜欢 (8)or分享 (0)

您必须 登录 才能发表评论!