docker-in-dockerが機能しない
dockerコマンドは使えるものの、コンテナが起動できない事象を引きました:
$ docker run -itd nginx:stable
docker: Error response from daemon: failed to mount /tmp/containerd-mount1226524157: mount source: "overlay", target: "/tmp/containerd-mount1226524157", fstype: overlay, flags: 0, data: "workdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/9/work,upperdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/9/fs,lowerdir=/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/7/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/6/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/5/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/4/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/3/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/2/fs:/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/1/fs,index=off", err: invalid argument
Run 'docker run --help' for more information
上記エラー発生時は、Dockerfile内でストレージドライバに関する設定を行い開発コンテナを起動します:
devcontainer.json
{
"name": "Go",
"build": {
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:3.0.0": {}
},
"customizations": {
"vscode": {
"settings": {
"editor.formatOnSave": true,
"[go]": {
"editor.rulers": [100]
}
},
"extensions": ["golang.go"]
}
}
}
Dockerfile
FROM mcr.microsoft.com/devcontainers/go:1.25-bookworm
# Docker daemonのストレージドライバをvfsに強制する設定を配置
RUN mkdir -p /etc/docker && echo '{"storage-driver": "vfs"}' > /etc/docker/daemon.json