Mar*_*hac 2 breakpoints docker dockerfile docker-image docker-build
搜索上面显示了许多关于如何为在 docker 容器中运行的应用程序设置断点的结果,但我对在Dockerfile 自身中设置断点很感兴趣,以便docker build在断点处暂停。例如Dockerfile:
FROM ubuntu:20.04
RUN echo "hello"
RUN echo "bye"
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来设置断点,RUN echo "bye"这样当我调试它时Dockerfile,图像将非交互式地构建到这RUN echo "bye"一点,独占。之后,我将能够与容器交互运行命令。在实际的Dockerfile我,有RUN断点变革的图像的文件系统正在建立之前S,我想能够以交互方式运行命令来分析在断点图像的文件系统像cd/ ls/find在时间断点。
您本身无法设置断点,但您可以在构建序列中的任意点(步骤之间)获得交互式 shell。
让我们建立你的形象:
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM ubuntu:20.04
---> 1e4467b07108
Step 2/3 : RUN echo "hello"
---> Running in 917b34190e35
hello
Removing intermediate container 917b34190e35
---> 12ebbdc1e72d
Step 3/3 : RUN echo "bye"
---> Running in c2a4a71ae444
bye
Removing intermediate container c2a4a71ae444
---> 3c52993b0185
Successfully built 3c52993b0185
Run Code Online (Sandbox Code Playgroud)
---> 0123456789ab带有十六进制 ID 的每一行都有一个有效的图像 ID。所以从这里你可以
docker run --rm -it 12ebbdc1e72d sh
Run Code Online (Sandbox Code Playgroud)
这将为您提供第一个RUN命令产生的部分图像上的交互式外壳。
没有要求构建作为一个整体成功。如果某个RUN步骤失败,您可以使用此技术在该步骤之前立即在映像上获取交互式 shell,然后手动重新运行该命令。如果您有一个很长的RUN命令,您可能需要将它分成两部分,以便能够在命令序列中的特定点获得调试 shell。
| 归档时间: |
|
| 查看次数: |
1142 次 |
| 最近记录: |