💬

DevContainer内でDockerを使用したい

に公開

TL;DR

// .devcontainer/devcontainer.json
{
    ...
    "features": {
        ...
        "ghcr.io/devcontainers/features/docker-in-docker:2": {},
        // または
        "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
    },
}

なぜ

DevContainer 内で Kilo Code ( Cline, Roo Code ) の MCP を使用したかった。

どうやって

まず、コンテナ内で docker を使用するには、DinD (docker in docker) や DooD (docker outside of docker) という方法があります。
説明は以下の記事が詳しいです。

https://qiita.com/ymktmk/items/d32f696070490d90d218

やってみる

DevContainer に機能を追加するには色々ありますが、まず簡単なものに、 features に追加する方法があります。
公式のレポジトリは以下です。

https://github.com/devcontainers/features

このレポジトリに、 DinDDooD をの機能を追加する feature のテンプレートがあるのでそれを使用します。

.devcontainer/devcontainer.jsonfeatures
"ghcr.io/devcontainers/features/docker-in-docker:2": {},

"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
を追加します。
TL;DR参照

後は、 DevContainer を再起動すれば docker コマンドが使用できます。

おめでとう!

vscode ➜ /workspaces/example (main) $ docker ps
abcdef012345  example:latest  "docker-entrypoint.sh"  1 minute  Up 1 minute  example

Discussion