ビルド引数の値を変更すると、そのARG行が無効化された後のすべてのレイヤーが変更されます。だから私はあなたがARGを使う直前にそれを含めるべきだと思います。
あなたがそれを必要とする直前に:上部に
docker build --build-arg TEST_ARG=test .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu
---> 104bec311bcd
Step 2 : RUN echo "no arg used"
---> Using cache
---> 5c29cb363a27
Step 3 : ARG TEST_ARG
---> Using cache
---> 73b6080f973b
Step 4 : RUN echo $TEST_ARG
---> 0acd55c24441
Successfully built 0acd55c24441
:
docker build --build-arg TEST_ARG=test .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu
---> 104bec311bcd
Step 2 : ARG TEST_ARG
---> Using cache
---> b611a1023fe3
Step 3 : RUN echo "no arg used"
---> Running in 63e0f803c6b2
no arg used
---> 592311ccad72
Removing intermediate container 63e0f803c6b2
Step 4 : RUN echo $TEST_ARG
---> Running in 1515aa8702f0
test
---> fc2d850fbbeb
Removing intermediate container 1515aa8702f0
Successfully built fc2d850fbbeb
最初の例では、二つの層がキャッシュから2つ目一層のみ(funnily十分に使用されています、ARGレイヤー自体)がキャッシュから使用されます。