Docker镜像与容器区别
镜像是Docker容器的基⽯,容器是镜像的运⾏实例,有了镜像才能启动容器。
base镜像----提供了⼀个基本的操作系统环境,⽤户可以根据需要安装和配置软件
base镜像通常是各种Linux发⾏版的Docker镜像⽐如ubuntu、Debian、centos等。
base镜像只是在⽤户空间与发⾏版⼀致,kernel版本与发⾏版是不同的。⽐如说虚机系统是ubuntu14.04,运⾏⼀个容器是centos系统的,那么centos使⽤的其实就是本虚机的kernel。
容器只能使⽤本地虚机的kernel且不能修改。
每⼀个镜像都会有⼀个⽂本⽂件Dockerfile,定义了如何构建Docker镜像。编写Dockerfile⽂件有专门的讲解,百度⼀下~
镜像的分层结构:DockerHub中绝⼤多数的镜像都是通过在base镜像中安装和配置需要的软件构建出来的。base镜像是from scratch开始,新镜像是直接在base镜像上构建
新镜像是从base镜像⼀层⼀层叠加⽣成的,每安装⼀个软件就等于在现有的镜像上增加⼀层。
Docker镜像采⽤分层结构的好处就是共享资源。docker进入容器
可写的容器层:当容器启动时,⼀个新的可写层被加载到镜像的顶部,这⼀层就叫容器层,容器层之下都叫镜像层。只有容器层是可写的,容器层下⾯的所有镜像层都是只读的。对容器的任何改动都只会发⽣在容器层中。
这⾥,所有的镜像层联合⼀起组成⼀个统⼀的⽂件系统,⽤户在容器层看到的就是⼀个叠加之后的⽂件系统。镜像层内部是有上下之分的:- 添加⽂件:在容器中创建⽂件时,新⽂件被添加到容器层中。
- 读取⽂件:当在容器中读取某个⽂件时,Docker会从上往下依次在各镜像层中查此⽂件,⼀旦到打开并读⼊内存。
- 修改⽂件:在容器中修改已存在的⽂件时,Docker会从上往下依次在各个镜像层中查此⽂件,⼀旦到⽴即将其复制到容器层中,然后才修改。(copy-on-write特性)
- 删除⽂件:在容器中删除⽂件时,Docker会从上往下依次在镜像层中,到后,会在容器层记录下此删除操作。
copy-on-write特性说明容器层保存的是镜像变化的部分,不会对镜像本⾝进⾏任何修改。所以镜像可以被多个容器共享。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论