在 CI 构建期间,我通过添加以下内容从多阶段 Docker 构建(测试报告)中的构建映像中提取构建工件:LABEL
构建步骤,然后使用带标签的图像创建一个容器以提取工件。这似乎在 Mac 版 Docker Desktop 中被破坏了,或者我误解了它应该如何工作?
这是重现该问题的最小构建:
# Dockerfile.one
FROM alpine AS one
WORKDIR /test
RUN touch here
LABEL build=here
# Dockerfile.two
FROM alpine AS one
WORKDIR /test
RUN touch here
LABEL build=here
FROM alpine AS two
COPY --from=one /test/* /test/
RUN touch again
# test.sh
#! /bin/bash -u
# Clean up
trap 'rm -r test & docker rmi $image' EXIT
docker build -f $1 .
docker images --filter 'label=build=here'
image=$(docker images --filter 'label=build=here' -q | head -n 1)
id=$(docker create $image) && docker cp $id:/test/ . && docker rm $id
ls -l test
Running ./test.sh Dockerfile.one
(仅一个阶段)产生文件的预期输出here
存在于工作目录中。
然而,运行./test.sh Dockerfile.two
(多阶段)失败,显然是因为没有图像匹配--filter label=build=here
.
这里有什么问题吗?
$ docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.7
API version: 1.41
Go version: go1.16.4
Git commit: f0df350
Built: Wed Jun 2 11:56:22 2021
OS/Arch: darwin/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:54:58 2021
OS/Arch: linux/amd64
Experimental: true
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)