作者:风云a899 | 来源:互联网 | 2023-02-08 12:59
1> shizhz..:
当您这样做时docker build
,docker将启动一个中间容器并在其中运行您的命令,然后在该过程完成后将该容器删除。因此,如果要在映像仍在构建过程中docker exec -it /bin/bash
检查某些文件的内容,只需检查一下即可。
这是一个详细的示例:
具有模拟较长构建过程的Dockerfile:
FROM alpine:3.3
RUN echo '["name": "docker"]' > /root/prod.json
RUN echo "prod.json modified, start long build process" && sleep 120 && echo "Long build process finished"
建立形象
? ~/test/long-build-dockerfile/ [test1*] docker build -t long-running-build .
Sending build context to Docker daemon 2.048 kB
Step 1/3 : FROM alpine:3.3
---> 6c2aa2137d97
Step 2/3 : RUN echo '["name": "docker"]' > /root/prod.json
---> Running in 4045ab129add
---> f5d21892fa51
Removing intermediate container 4045ab129add
Step 3/3 : RUN echo "prod.json modified, start long build process" && sleep 120 && echo "Long build process finished"
---> Running in dd45b269efda
prod.json modified, start long build process
现在,构建过程将在此处停留120秒,然后打开另一个终端并找到中间容器:
? ~/ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd45b269efda f5d21892fa51 "/bin/sh -c 'echo ..." 11 hours ago Up 4 seconds serene_gates
进去检查一下内容:
? ~/ docker exec -it serene_gates sh
/ # cd /root/
~ # ls
prod.json
~ # cat prod.json
["name": "docker"]