构建一个简单的镜像
1、编写一个简单的dockerfile
![09ce4730dd9c892774319e70538991b8.png](https://i-blog.csdnimg.cn/blog_migrate/b367916160b22d26ae84b01b7bcb503a.jpeg)
2、构建镜像
3、使用docker inspect命令查看构建的镜像的详情
1、编写dockerfile
2、使用docker build命令在dockerfile目录进
行构建镜像:
docker build -t="test/file_contract:v1" .
-t:指定了仓库和名称及tag名称
最后的“.”告诉Docker到当前目录中去找
Dockerfile文件
3、docker images查看生成的镜像
4、docker inspect CONTAINER|IMAGE [CONTAINER|IMAGE...]
查看容器运行时详细信息的命令。了解一个Image或者Container的完整构建信息就可以通过这个命令实现。
5、逐层分析docker镜像 lower diff link
可以看到当前层的真实文件只有hello.txt文件,事实上,每一层中的diff文件夹包含实际内容,是文件系统在统一挂载
时的挂载点。
link文件描述了该层标识符的精简版,内容为l目录中的超链接,超链接实际指向当前层目录中的diff文件夹,之所以
缩短目录,是为了避免mount时超出页大小限制。
lower文件描述了层序的组织关系。它包含了该层的所有更底层名称和顺序,可以根据该文件构建出整个镜像的层次
结构,最底层则没有该文件
可以看到,link文件和lower文件的内容保存的都是目录的精简版描述,根据lower中的内容可以看出整个镜像的层次关系,
越后面的越底层。其与inspect中的lowerDir是一一对应关系。
启动容器
启动容器
![8ca7a1e5fc85dc222c2f1fe251137b5c.png](https://i-blog.csdnimg.cn/blog_migrate/3c5be9adc1684d78c0042a4956919d4e.png)
查看容器运行时信息
![c0d5aeeebb16d99244f3978787a07920.png](https://i-blog.csdnimg.cn/blog_migrate/bcc258e58fc5602d9bf54b569b795642.png)
启动一个容器后,在overlay2目录下会多出两个文件夹。
729eab2de40c344cab2900d9f54048cd66cdac08d396522866213497e1456bb0-init:用于存放容器初始化时的信息
729eab2de40c344cab2900d9f54048cd66cdac08d396522866213497e1456bb0:容器的读写层
容器运行后,查看容器层目录。
容器顶层:即容器的可读可写层。
我们可以看出,
Overlay2将lowerdir、upperdir、
workdir联合挂载,形成最终的merged,通过观察可发现merged中的etc group等文件,第一层中的文件被第二层中的给覆盖了。
upperdir是容器可读可写层,即
Diff文件夹,因为容器刚启动,容器层还未有自己的文件,所以diff文件夹暂时为空。
![2bc9d924e40b56fdd5015762ae97d927.png](https://i-blog.csdnimg.cn/blog_migrate/aa25f140496760d6b7c455181c22c8dc.jpeg)