github.com/containerd/nerdctl@v1.7.7/docs/builder-debug.md (about)

     1  # Interactive debugging of Dockerfile (Experimental)
     2  
     3  nerdctl supports interactive debugging of Dockerfile as `nerdctl builder debug`.
     4  
     5  ```
     6  $ nerdctl builder debug /path/to/context
     7  ```
     8  
     9  This feature leverages [buildg](https://github.com/ktock/buildg), interactive debugger of Dockerfile.
    10  For command reference, please refer to the [Command reference doc in buildg repo](https://github.com/ktock/buildg#command-reference).
    11  
    12  :warning: This command currently doesn't use the host's `buildkitd` daemon but uses the patched version of BuildKit provided by buildg. This should be fixed to use the host's `buildkitd` in the future.
    13  
    14  ## Example
    15  
    16  Example Dockerfile:
    17  
    18  ```Dockerfile
    19  FROM busybox AS build1
    20  RUN echo a > /a
    21  RUN echo b > /b
    22  RUN echo c > /c
    23  ```
    24  
    25  Example debugging:
    26  
    27  ```console
    28  $ nerdctl builder debug --image=ubuntu:22.04 /tmp/ctx/
    29  WARN[2022-05-17T10:15:48Z] using host network as the default#1 [internal] load .dockerignore
    30  #1 transferring context: 2B done
    31  #1 DONE 0.1s
    32  
    33  #2 [internal] load build definition from Dockerfile
    34  #2 transferring dockerfile: 108B done
    35  #2 DONE 0.1s
    36  
    37  #3 [internal] load metadata for docker.io/library/busybox:latest
    38  INFO[2022-05-17T10:15:51Z] debug session started. type "help" for command reference.
    39  Filename: "Dockerfile"
    40   =>   1| FROM busybox AS build1
    41        2| RUN echo a > /a
    42        3| RUN echo b > /b
    43        4| RUN echo c > /c
    44  (buildg) break 3
    45  (buildg) breakpoints
    46  [0]: line: Dockerfile:3
    47  [on-fail]: breaks on fail
    48  (buildg) continue
    49  #3 DONE 3.1s
    50  
    51  #4 [1/4] FROM docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8
    52  #4 resolve docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8 0.0s done
    53  #4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 0.2s
    54  #4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 5.3s
    55  #4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 10.4s
    56  #4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 772.81kB / 772.81kB 11.4s done
    57  #4 extracting sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0.1s done
    58  #4 DONE 20.2s
    59  
    60  #5 [2/4] RUN echo a > /a
    61  #5 DONE 0.1s
    62  Breakpoint[0]: reached line: Dockerfile:3
    63  Filename: "Dockerfile"
    64        1| FROM busybox AS build1
    65        2| RUN echo a > /a
    66  *=>   3| RUN echo b > /b
    67        4| RUN echo c > /c
    68  (buildg) exec --image sh
    69  # ls /debugroot/
    70  a  b  bin  dev	etc  home  proc  root  tmp  usr  var
    71  # cat /debugroot/a /debugroot/b
    72  a
    73  b
    74  #
    75  (buildg) quit
    76  ```