gpt4 book ai didi

docker - 在Dockerfile中清空多阶段构建

转载 作者:行者123 更新时间:2023-12-02 19:28:56 24 4
gpt4 key购买 nike

我了解使用多阶段构建的目的,但我不明白为什么您要拥有这样的空白阶段?有人可以详细说明用例吗?

# Use an official Ubuntu 18.04 as parent image
FROM ubuntu:18.04

# Install python 2.7
FROM python:2.7

RUN apt-get update
RUN apt-get install -y git make g++
# more stuff, nothing using layer 0.

资料来源: https://raw.githubusercontent.com/kubeflow/examples/master/xgboost_ames_housing/Dockerfile

最佳答案

撰写Dockerfile的人可能不了解多阶段构建的工作方式。这不是一个罕见的误解,因为Dockerfiles的常见要求是将多个镜像合并在一起,而这并不是多个FROM行提供的。

该示例所做的是下载图像,然后立即将其忽略。如果在以后的阶段中有COPY命令,则可以从先前的图像进行复制,这是我见过的不做任何处理即可导入图像的几个原因之一:

ARG parent_ver=2.0
FROM repo:5000/parent:${parent_ver} as parent
FROM base as release
COPY --from=parent /some/file /dest
...

通常,您可以直接从另一张图像进行复制,但是如果要使用上述变量指定它,则当前解决方案涉及上述解决方法。

由于提供的示例没有执行任何操作,因此您看到的只是下载了不需要的图像而未使用。这会减慢构建速度,占用带宽并占用磁盘空间,但仅限于构建服务器上。值得在该GitHub存储库上填写一个问题来修复其示例。

关于docker - 在Dockerfile中清空多阶段构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53546176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com