zoukankan      html  css  js  c++  java
  • Docker中镜像与容器之间的区别


    容器与镜像图解

    什么是镜像?

      镜像就是一堆只读层的统一视角(并非是一个单独的文件,而是具有层级结构)。

         如图所示,我们可以看见多个只读层,重叠在一起。除了最下面的一层,其他层都会有一个指针指向下一层。并且能够在主机(运行Docker的机器)的文件系统访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
     
    你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现它们存在于/var/lib/docker目录下。 

    什么是容器?

      容器的定义和镜像的定义几乎一摸一样,也是一堆只读层的统一视角,唯一的区别在于容器最上面那一层是可读可写的。

     

    要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器

    总结:可以将镜像是文件,容器是进程。容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件(镜像就是容器的系统文件),这里的文件包括进程运行所需要的可执行文件,依赖软件,库文件,配置文件等等。也可以将容器看做是镜像运行的一个实例,或者是文件与进程的关系。

    每运行一个容器,都会在镜像上加一个可写层,但这一层并不会改变镜像本身,这也就是为什么,有时候你如果同一个镜像,启动多个容器,里面的内容不会变,但是如果将可写层持久化,就要通过commit命令来把可写层写到磁盘,即生成新的镜像。

      

     

     

     
  • 相关阅读:
    ios8的图标尺寸
    Xcode 6.1 正式版如何创建一个Empty Application
    xcode真机调试
    iOS基础控件
    iOS开发系列之二 – UILabel 用法小结
    (转)25个增强iOS应用程序性能的提示和技巧--初级篇
    IOS开发第三方开源库
    ios -- NSdata 与 NSString,Byte数组,UIImage 的相互转换
    4.组件的语法糖注册方式
    3.父组件和子组件
  • 原文地址:https://www.cnblogs.com/ltyc/p/14069618.html
Copyright © 2011-2022 走看看