文件标识符无效。使用 fopen 生成有效的文件标识符。_Docker文件结构

构建一个简单的镜像

1、编写一个简单的dockerfile

09ce4730dd9c892774319e70538991b8.png

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

查看容器运行时信息

c0d5aeeebb16d99244f3978787a07920.png

启动一个容器后,在overlay2目录下会多出两个文件夹。

729eab2de40c344cab2900d9f54048cd66cdac08d396522866213497e1456bb0-init:用于存放容器初始化时的信息

729eab2de40c344cab2900d9f54048cd66cdac08d396522866213497e1456bb0:容器的读写层

容器运行后,查看容器层目录。

容器顶层:即容器的可读可写层。

我们可以看出,

Overlay2将lowerdir、upperdir、

workdir联合挂载,形成最终的merged,通过观察可发现merged中的etc group等文件,第一层中的文件被第二层中的给覆盖了。

upperdir是容器可读可写层,即

Diff文件夹,因为容器刚启动,容器层还未有自己的文件,所以diff文件夹暂时为空。

2bc9d924e40b56fdd5015762ae97d927.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值