问题描述
在Dockerfile中使用了多阶段构建,并且想知道在第二阶段构建完成后,是否应该删除WORKDIR目录的内容。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
根据Docker官方文档的描述,当使用Dockerfile创建镜像时,每个步骤都会创建一个Docker层。关于层的描述可以在官方Docker页面上找到。
因此,当使用多阶段构建创建镜像时,它引入了一个新的构建步骤,可以使用FROM语句中的别名来命名,并且除了通过最后一个FROM语句创建的镜像层之外,所有层都会被删除。
在构建镜像后,可以使用docker image inspect命令检查包含WORKDIR的层是否存在。我认为您可能知道每个步骤的唯一层值。
您可以查看镜像由哪些层组成,例如:
$ docker image inspect [OPTIONS] 464503b73bfe # IMAGE
[
{
"Id": "sha256:464bf1...46c",
...
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:26711...8fcf",
"sha256:6c5a51...56e0"
]
},
...
]
在上面的示例中,我们使用docker image inspect命令检查了一个名为464503b73bfe的镜像。您可以看到镜像由哪些层组成。
根据这些信息,您可以确定WORKDIR目录是否存在于构建的镜像中。如果WORKDIR目录存在于构建的镜像中,您可以选择删除它,以减小镜像的大小。
正文完