前言
Docker编译dockerfile的过程中,经常会碰到构建失败,那么怎样去调试dockerfile呢?
其实Docker编译的时候为每一条编译指令会建立一个临时的镜像,当编译CMD失败时,会保留前一份镜像,我们可以进到这个镜像,然后手动运行下一条CMD,查看编译错误信息。
创建dockerfile
mkdir tmp && cd tmp
vim Dockerfile
1
2
3
4FROM alpine:3.9
COPY . /app
RUN make /app
CMD python /app/app.py
编译dockerfile
docker build -t docker-alpine-test:0.1 .
1
2
3
4
5
6
7
8
9
10Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM alpine:3.9
---> 78a2ce922f86
Step 2/4 : COPY . /app
---> 2b756be83925
Step 3/4 : RUN make /app
---> Running in 922354c938e3
/bin/sh: make: not found
The command '/bin/sh -c make /app' returned a non-zero code: 127$ docker images
1
2REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 2b756be83925 9 minutes ago 5.55MB可以看到docker保留了前一个运行成功的镜像2b756be83925
调试镜像
docker run -it 2b756be83925 /bin/sh
1
2
3
4
5
6
7
8/ # ls
app bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/ # ls /app/
Dockerfile
/ # make /app
/bin/sh: make: not found
/ # python /app/app.py
/bin/sh: python: not found