Docker 镜像

Docker 镜像
  1. 概念
  • 轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件
  1. UnionFS(联合文件系统)
Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加,
同时可以将不同的目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
Union文件系统是Docker镜像的基础。镜像可以通过分层来继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像.
特点:
    一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,
    联合加载会把各层文件系统叠加起来,这样最终的文件系统包含了所有底层的文件和目录。

  1. Docker镜像加载原理
  • docker的镜像实际上是由一层一层的文件系统组成,这种层级的文件系统叫联合文件系统。

  • bootfs(boot file system)主要包含了bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动是会加载bootfs文件系统。在docker镜像最底层就是bootfs。这一层与我们典型的Linux/Unix系统是一样的。包含boot加载器和内核。当boot加载完成之后整个内核就都在内核中了。此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

  • rootfs(root fie system),在bootfs之上。包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

  • 对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了。底层统一使用Host的kernel,自己只需要提供rootfs就行了,所以对于不同的镜像,bootfs基本是一致的,rootfs有所差别,大家一起共用bootfs,所以docker镜像很小,如centos只有200M左右。

  1. 分层的镜像
  • docker是分层的,在pull镜像时,下载过程中也是一层一层的下载

  • Docker镜像采用分层结构的原因

共享资源    比如:有很多镜像都是从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像即可,运行时也只需要加载一份base镜像在容器中,就可以为所有的镜像提供服务,并且,镜像的每一层都可以共享。
  • 特点
Docker镜像都是只读的;
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常叫做容器层,容器层之下的都叫镜像层。 
  1. Docker镜像的commit操作
  • docker commit 提交容器副本使之称为一个新的镜像
  • docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签]
如:启动一个tomcat之后把webapps中的docs文档删掉在commit,以后以这个镜像生成容器运行,都会咩有docs这个文档
  docker run -it -p 8888:8080
  cd webapps
  rm -rf docs
  docker commit -a="zhazha" -m="delete docs" ca6fd1a3bf91 dokcer/tomcat:1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值