docker - Dockerfile 中的每一行都会创建一个新层吗?

标签 docker dockerfile docker-layer

我了解层、Copy-on-Write (COW) 和 UnionFS 等基本概念。我一直听到这样的说法

every line in a Dockerfile creates a new layer

所以我做了一些实验。这是我的 Dockerfile:

FROM davidjfelix/python3.5

RUN mkdir -p /code/server
ADD app.py /code
ADD ./server /code/server
ADD requirements.txt /code/

WORKDIR /code
RUN pip3 install -r requirements.txt

VOLUME /stuff

EXPOSE 7000

CMD ["/usr/local/bin/python", "-u", "app.py"]

我基于 Python 3.5 镜像创建了一个新镜像。使用 dockerspect 检查两个镜像后,我发现与 Python 3.5 镜像相比,新镜像仅具有 5 个附加层:

"RootFS": {
    "Type": "layers",
    "Layers": [
        "sha256:6c3eb4525275f7040b8e3fbc846425ef934e1d44412d01cb37dc907d7d16e468",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
        "sha256:19f5e5ea72d6119ff25fb7bd45974cc108ae0bdc42bdeef1d805e1114502fe70",
        "sha256:cd55733e01aec60a4e2c644f5bbf14b4c543cc1bce38f1757e8dda457d19de28",
        "sha256:b8d8fe2d495aefca232e1a5b683b5ba3dce0661da29adc97e492274f31d9f4b6",
        "sha256:258951e4bcc601a96055b0bf6e230a298f27c44bd9838ab9fbe4fb4824f3f1ca",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
        "sha256:b421868bee11843b136d6051d5f497c6d47fa67d2d5895853c6055ef5c75ef5a",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
        "sha256:26f874482e486b9989aba19b50a9b8308cb29a8dc6d3d8da00d05373cb0bad1e",
        "sha256:4a3ef76df24253c3034313384494e3f8136c2580d2ddf423aaeed9297f83b22d",
        "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
    ]
}

最佳答案

此处显示的层是文件系统层。
Dockerfile 指令,例如 WORKDIRVOLUMEEXPOSECMD 不会更改 FS .

一个docker history会显示这些命令,但不会显示 docker inspect .
请参阅“Show Layers of Docker Image

关于docker - Dockerfile 中的每一行都会创建一个新层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39325279/

相关文章:

docker - 自动化Docker容器的服务(couchbase)配置

docker - 为什么我的docker build命令失败并出现 “invalid id”错误?

docker - 层数是否会影响当前和 future docker 镜像的大小、设置时间或性能?

docker - docker 构建之间的层不能共享

python - 无法执行脚本 docker-compose Laravel

azure - 使用 Azure Runbook 拉取并运行 Docker 容器

docker - Docker-compose尝试一次执行多个RUN

wordpress - 如何在docker-compose.yml中运行wp cli

git - 在 Docker 中,git-lfs 给出错误 : credentials for https://github. ... 未找到