docker - Docker:为什么inspect命令显示8层而不是7层

标签 docker dockerfile docker-image

我有一个简单的docker文件,可以在Alpine中运行Flask Web框架。

 FROM python:2.7-alpine

RUN mkdir /app
WORKDIR /app

COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt

COPY . .

LABEL maintainer="Test Test <test@gmail.com>" \
    version="1.0"

CMD flask run --host=0.0.0.0 --port=5000

并构建了如下的 docker 形象

docker image build -t web1 .



并能够看到在每个层中正在创建和删除的中间容器(WORKDIR / app除外)。但是当我检查使用

docker image inspect web1



我得到的是8层而不是7层。第八层从哪里来?

最佳答案

仅在镜像构建期间为文件系统更改创建图层。其他所有内容都存储在image manifest中。

基本镜像python:2.7-alpine具有4个文件系统层。

docker inspect python:2.7-alpine --format '{{range .RootFS.Layers}}
 {{.}}{{end}}'
 sha256:2b0fb280b60dad0c3e2f6b207ef0d8f6a04f09638d245d3a2fdf0d6933e734d6
 sha256:1d2140d2445eafe082403409b3fe53ec3d8c148dacd632857af3d00582aab358
 sha256:17c290bb5b65c2d20fc06de87381281e3d47e73064bff2eb383691d8d15cc5e9
 sha256:316e76fb784760855a473b2c655abecdcf94dbaef9ce3673645b40f8df24c8e1

您的镜像在基础镜像的4层之上创建了4个文件系统层(Dockerfile RUNCOPYRUNCOPY命令)
docker inspect web1 --format '{{range .RootFS.Layers}}
 {{.}}{{end}}'
 sha256:2b0fb280b60dad0c3e2f6b207ef0d8f6a04f09638d245d3a2fdf0d6933e734d6
 sha256:1d2140d2445eafe082403409b3fe53ec3d8c148dacd632857af3d00582aab358
 sha256:17c290bb5b65c2d20fc06de87381281e3d47e73064bff2eb383691d8d15cc5e9
 sha256:316e76fb784760855a473b2c655abecdcf94dbaef9ce3673645b40f8df24c8e1
 sha256:...
 sha256:...
 sha256:...
 sha256:...

关于docker - Docker:为什么inspect命令显示8层而不是7层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821860/

相关文章:

java - Java 应用 Docker 化时串口访问失败

amazon-web-services - ECR 生命周期策略异常

python - 当拉docker镜像并在我自己的镜像中使用它时-它停在最后一行吗?

docker - Cloudera和Docker

带有符号链接(symbolic link)的 docker ADD

docker - pm2 和 pm2-runtime 有什么区别?

docker - 无法拉取本地 docker 镜像 - Windows

php - 将bin文件复制到docker容器会导致错误

docker - docker swarm中的Prometheus dns服务发现

Docker-Compose 规模和持久数据存储