I often find myself in a situation where I'm building an image from some Dockerfile, and the build fails 10 or 15 lines in, and I want to dive in and debug what's going wrong with that failing line. Fortunately - that's easy to do.
Let's suppose you're trying to build an image with a Dockerfile like this:
$ cat Dockerfile FROM alpine:3.5 RUN echo "Step 2" RUN echo "Step 3" && exit 1 RUN echo "Step 4"
Of course the build fails on 'exit 1' like this:
$ docker build -t demo:1.0.0 .Sending build context to Docker daemon 60.6 MB Step 1 : FROM alpine:3.5 ---> 88e169ea8f46 Step 2 : RUN echo "Step 2" ---> Running in 7ec0de04622c Step 2 ---> 281d8cac4e45 Removing intermediate container 7ec0de04622c Step 3 : RUN echo "Step 3" && exit 1 ---> Running in a8a16cb6d591 Step 3 The command '/bin/sh -c echo "Step 3" && exit 1' returned a non-zero code: 1
Fortunately, the docker build saves an intermediate image after each command in the Dockerfile, and outputs the id of that image (---> 281d8cac4e45), so it's easy to do something like this to debug that failing command:
$ docker run --name debug -v '/home/reuben:/mnt/reuben' -it 281d8cac4e45 /bin/sh / #
No comments:
Post a Comment