我有
Dockerfile
FROM registry.access.redhat.com/ubi8/nginx-120:1-92.1679484498
ARG VERSION
ARG MY_VERSION
RUN echo VERSION: $VERSION && \
echo MY_VERSION: $MY_VERSION
我用
建造它docker build -t ubi_nginx . --build-arg VERSION=1.2.3 --build-arg MY_VERSION=1.2.3
我得到输出:
Sending build context to Docker daemon 20.84MB
Step 1/4 : FROM registry.access.redhat.com/ubi8/nginx-120:1-92.1679484498
---> 51d4367bcb6a
Step 2/4 : ARG VERSION
---> Using cache
---> a8285e1df5d3
Step 3/4 : ARG MY_VERSION
---> Using cache
---> fca127167f84
Step 4/4 : RUN echo VERSION: $VERSION && echo MY_VERSION: $MY_VERSION
---> Running in 43a9f9ab95e2
VERSION: 0
MY_VERSION: 1.2.3
Removing intermediate container 43a9f9ab95e2
---> 34e6e26cf8c8
Successfully built 34e6e26cf8c8
Successfully tagged ubi_nginx:latest
为什么Docker将
MY_VERSION
设置为正确的值1.2.3
,而VERSION
却设置为0
? VERSION
是我们生态系统和 CI 管道中的常见 Docker 变量。这是导致这种奇怪行为的第一张图片。我想了解问题并在可能的情况下解决它。我试图分析基本图像,但 docker inspect
没有显示任何关于参数或 VERSION
的信息。这种行为怎么可能呢?我能够在不同的 Linux 系统上重现这种行为。