gpt4 book ai didi

仅来自基本镜像的入口点的 Dockerfile

转载 作者:行者123 更新时间:2023-12-02 21:04:09 27 4
gpt4 key购买 nike

我有一个非常简单的 Dockerfile,如下所示:-

FROM my-base-image
COPY abc.properties /opt/conf/

现在我的基础镜像有一个 docker 入口点(在它的 Dockerfile 的末尾)但是你可以看到这个生成的镜像没有。这行得通吗,或者我们是否需要在任何给定的 Dockerfile 中有一个 docker 入口点/CMD。另外,结果图像中 COPY 指令的执行顺序是什么。我的意思是,因为这个 Dockerfile 没有入口点,所以它会从基础镜像执行一个入口点,但是它将在 COPY 指令之后执行,或者是先执行基础镜像入口点,然后在容器启动时执行这个 COPY 指令只是在 docker 中寻找概念。

最佳答案

几个 Dockerfile 指令(特别是 ENTRYPOINT 和 CMD,还有 EXPOSE、LABEL 和 MAINTAINER)只是在镜像中设置元数据;他们自己并没有真正做任何事情。在单个 Dockerfile 中,这可以正常工作:

FROM ubuntu:18.04
WORKDIR /app
# Just remembers this in the image metadata; doesn't actually run it
CMD ["/app/main.sh"]
# ...we should actually copy the file in too
COPY main.sh /app

当您从另一个镜像构建一个 Dockerfile 时,它​​的行为几乎完全就像您运行第一个 Dockerfile 中的所有命令,然后运行第二个 Dockerfile 中的所有命令一样。由于 CMD 和 ENTRYPOINT 只是设置了元数据,所以第二张图片继承了这个元数据。

构建和运行镜像是两个独立的步骤。在您展示的示例中,COPY 指令发生在 docker build 步骤中,并且基本镜像的命令直到后面的 docker run 步骤才生效。 (在 Docker Compose 中也是如此;一个常见的问题是为什么 Dockerfile 步骤无法连接到 Compose YAML 文件中声明的其他容器。)

有一个异常(exception),它在 ENTRYPOINT 附近。如果您有一个声明了 ENTRYPOINT 和 CMD 的基础镜像,并且您在派生镜像中重新声明了 ENTRYPOINT,it resets the CMD as well (本节最后一段)。这通常不是实际问题。

关于仅来自基本镜像的入口点的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59056718/

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