Dockerfile の対話型デバッグ (実験的)
nerdctl は、nerdctl ビルダーのデバッグ
として Dockerfile の対話型デバッグをサポートします。
この機能は、Dockerfile の対話型デバッガーである buildg を利用します。 コマンドリファレンスについては、buildgリポジトリのコマンドリファレンスドキュメントを参照してください。
このコマンドは現在、ホストの
buildkitd
デーモンを使用しませんが、buildg が提供するパッチ適用済みのバージョンの BuildKit を使用します。これは、将来ホストの buildkitd
を使用するように修正する必要があります。
例
Dockerfile の例:
デバッグ例:
$ nerdctl builder debug --image=ubuntu:22.04 /tmp/ctx/
WARN[2022-05-17T10:15:48Z] using host network as the default#1 [internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.1s
#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 108B done
#2 DONE 0.1s
#3 [internal] load metadata for docker.io/library/busybox:latest
INFO[2022-05-17T10:15:51Z] debug session started. "help" をタイプすると、コマンドリファレンスを表示できます。
ファイル名: "Dockerfile"
=> 1| FROM busybox AS build1
2| RUN echo a > /a
3| RUN echo b > /b
4| RUN echo c > /c
(buildg) break 3
(buildg) breakpoints
[0]: line: Dockerfile:3
[on-fail]: breaks on fail
(buildg) continue
#3 DONE 3.1s
#4 [1/4] FROM docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8
#4 resolve docker.io/library/busybox@sha256:d2b53584f580310186df7a2055ce3ff83cc0df6caacf1e3489bff8cf5d0af5d8 0.0s done
#4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 0.2s
#4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 5.3s
#4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0B / 772.81kB 10.4s
#4 sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 772.81kB / 772.81kB 11.4s done
#4 extracting sha256:50e8d59317eb665383b2ef4d9434aeaa394dcd6f54b96bb7810fdde583e9c2d1 0.1s done
#4 DONE 20.2s
#5 [2/4] RUN echo a > /a
#5 DONE 0.1s
Breakpoint[0]: reached line: Dockerfile:3
Filename: "Dockerfile"
1| FROM busybox AS build1
2| RUN echo a > /a
*=> 3| RUN echo b > /b
4| RUN echo c > /c
(buildg) exec --image sh
# ls /debugroot/
a b bin dev etc home proc root tmp usr var
# cat /debugroot/a /debugroot/b
a
b
#
(buildg) quit