gpt4 book ai didi

docker - 派生镜像时继承了哪些 Dockerfile 指令?

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

假设我有两个 Dockerfile,用于创建带有各自标签的镜像:

Dockerfile.A:

FROM some-image

...
EXPOSE 9000

ENTRYPOINT ["some-script.sh"]

Dockerfile.B:

FROM A

...

当我运行镜像 B 时,容器是否还会公开我在 Dockerfile.A 中定义的端口,并运行其中定义的入口点脚本?

更一般地说,instructions除了文件系统层之外,都是从基础 Dockerfile 继承的吗?

最佳答案

这些指令与系统文件一起从基础镜像继承。

暴露

如果基础镜像在 Dockerfile 中提到了这些 EXPOSE 8080 9090 端口,那么扩展 Dockerfile 不需要暴露这些端口。但是暴露和发布之间是有区别的。

ENV

如果基础镜像有一些ENV,比如test-a=abc,那么扩展镜像将有这些ENV。

工作目录

如果基础镜像设置了"WorkingDir": "/root",那么扩展iamge将会有工作目录/root

维护者

MAINTAINER adiii 如果不覆盖,扩展图像将具有相同的作者。

标签

扩展图像将具有与基本图像相同的标签

构建

设计为通过扩展镜像运行。

入口点

与基础镜像中的入口点相同,除非您覆盖它。

CMD

扩展镜像与基础镜像具有相同的 CMD,只要您不覆盖入口点指令,请参见下文。

你可以试试。

DockerfileA

FROM node:8.16
MAINTAINER adiii
LABEL key=test
EXPOSE 8080 9090
ENV test-a=abc
WORKDIR /root
ENTRYPOINT /root
CMD ["npm", "run", "start"]

现在构建docker镜像B

DockerfileB

FROM a

docker build -t b 。检查镜像 b docker inform b:latest 你会看到上面的指令继承自基础镜像,因为 Dockerfile B 没有覆盖入口点指令。

如果扩展镜像覆盖入口点,the documentation表示 CMD 将重置为空值,如果需要,必须重新定义。

关于docker - 派生镜像时继承了哪些 Dockerfile 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57577265/

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