Docker的基本组成

  • Docker Client 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像
  • Docker Container 容器
  • Docker Registry 仓库

Docker客户端/守护进程
C/S架构

    Docker 是C/S架构的程序,Docker客户端向Docker服务器端也就Docker的守护进程发出请求,守护进程处理完所有的工作并返回结果。

本地/远程

    Docker客户端对服务器端的访问既可以是本地,也可以是远程。

Docker Image 镜像

这里写图片描述

容器的基石

    镜像是Docker容器的基石,容器基于镜像启动和运行,镜像就好比容器的源代码,保存了用于启动容器的各种条件。

层叠的只读文件系统

    Docker镜像是一个层级的只读文件系统,最底端是一个引导文件系统即bootfs,这很想典型的linux的引导文件系统,Docker用户几乎不会和引导文件有交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载。Docker系统的第二层是rootfs文件系统,rootfs文件系统可以是一个或多个操作系统,比如Centos, Ubuntu,在传统的linux引导过程中rootfs文件系统会最先以只读的方式加载,当引导结束并完成了引导检查后,它才会被切换为读写模式。但是在Docker里,rootfs文件系统永远只能是只读状态。

联合加载

    Docker运用联合加载技术,又会在rootfs文件系统之上加载更多的只读文件系统,联合加载指的是一次同时加载多个文件系统,但是在外面看起来,只能看到一个文件系统,联合加载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有的底层文件和目录,Docker将这样的文件系统称为镜像。一个镜像可以放到另一个镜像的顶部,对于下面的镜像称为父镜像,可以依次类推知道镜像栈的最底部,最底部的镜像称为基础镜像。

Docker Container 容器

通过镜像来启动

     容器通过镜像来启动,Docker的容器是Docker的执行来源,容器中可以运行客户的一个或多个进程,如果说镜像是Docker生命周期的构建和打包阶段,那么容器则是启动和执行阶段。

启动和执行阶段

    当一个容器启动时Docker会在该镜像的最顶层,加载一个读写文件系统也就是一个可写层文件层,我们在Docker中运行的程序,就是在可写层执行的。

写时复制(copy on write)

    当Docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层上,比如如果想修改一个文件,文件首先会从读写层下面的只读层,复制到读写层,该文件的只读版本依然存在,但是已经被该文件读写层的文件副本所隐藏,这就是Docker中一个重要的技术写时复制(copy on write)每个读镜像层都是只读的,并且以后永远不会发生变化,当新创建一个容器时,Docker会构建出一个镜像栈。就像图中所表现的
这里写图片描述
在栈的最顶层添加可写层,这个读写层加上下面的镜像层以及一些配置数据,就构成了一个容器,容器的这种特点,加上镜像分层的框架,使我们可以快速的构建镜像,并运行包含我们自己的应用程序的容器。

Docker Registry 仓库

    Docker用仓库来保存用户构建的镜像,仓库分为公有和私有两种。

公有

    Docker公司自己提供了一个公有仓库叫Docker Hub,我们可以在Docker Hub上去注册账号分享并保存自己的镜像。也可以通过Docker Hub来查找我们需要的镜像,为我们节省构建镜像的时间。

私有

    我们也可以自己搭建自己的私有仓库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值