docker镜像加载原理
一、docker 分层
docker 的镜像实际上是由一层一层的文件系统组成,这种层级的文件系统我们称之为UnionFS
Docker
镜像是由一系列层来构成的,每层代表Dockerfile
中的一条指令,依下面Dockerfile
为例:
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py
该Dockerfile
包含四个命令,每个命令都会新创建一个层。FROM
语句会从ubuntu:18.04
镜像创建一个层。COPY
指令会从Docker
客户端的当前目录下添加一些文件。RUN
指令使用了make
指令来构建。最后CMD
是☞在容器中运行什么命令。
而对于Docker
来说,创建新容器时,每一层都会彼此堆叠,可以在基础层的基础上添加新的可写容器层。对容器的所做的所有更改都将写入到该可写容器层中。下图显示了基于Ubuntu 15.04
的容器。对于Image layers
都是Read Only
的。
二、提交镜像
docker commit 提交容器成为一个新的副本
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[tag]
docker commit -a="ncb" -m="add webapp" 1c92c7b8152d tomcat01:1.0
使用修改后的tomcat01:1.0这个镜像就可以包含修改后的东西,使用commit使他变成新的镜像,每次提交可以当作保存一次版本;