1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker Desktop不要!WSL2 + Docker Engine + DevContainerでC++開発環境を作る【第1弾:環境構築編】

1
Last updated at Posted at 2026-04-17

はじめに

Docker Desktopは2022年から大企業向けに有料化されました。
しかし WSL2上にDocker Engineを直接インストール すれば、Docker Desktopなしで同等の開発環境が無料で構築できます。

この記事では、WindowsのVSCodeからDevContainerを使ってC++開発環境を立ち上げるまでを解説します。

この記事でできること

  • Docker Desktopなしで、WSL2上のDockerをVSCodeから使う
  • C++ + GCC + CMakeが入ったDevContainerを起動する
  • Hello Worldをビルド・実行する

対象読者

  • WSL2とDockerの基本は知っている方
  • Docker Desktopを使わない環境を作りたい方
  • VSCodeのDevContainerを試してみたい方

シリーズ構成

内容
第1弾(本記事) 環境構築 → Hello World
第2弾 CMake + vcpkg で本格プロジェクト
第3弾 C#編(.NET + DevContainer)

構成の全体像

Windows
└── VSCode(Dev Containers拡張)
    └── WSL2(Ubuntu)
        └── Docker Engine(Docker Desktop不使用)
            └── DevContainer
                └── C++環境(GCC + CMake)

ポイントは Docker Engineの実体はWSL2側にある という点です。
VSCodeのDev Containers拡張が「WSL2上のDockerを使う」設定になっていれば、Windows側にDocker Desktopは不要です。


前提条件

  • Windows 10 バージョン2004以上(ビルド19041以上)またはWindows 11
  • WSL2がインストール済みで、デフォルトディストリビューションがUbuntu
  • VSCodeがインストール済み

WSL2のインストール方法は 公式ドキュメント を参照してください。


Step 1: WSL2上にDocker Engineをインストールする

WSL2(Ubuntu)上で作業します。

競合パッケージの削除

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
    sudo apt-get remove $pkg
done

Docker公式リポジトリの追加

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engineのインストール

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io \
    docker-buildx-plugin docker-compose-plugin

sudoなしでdockerコマンドを使えるようにする

sudo usermod -aG docker $USER

一度ログアウト・再ログインして反映させます。

動作確認

docker --version
Docker version 28.3.2, build 578ccf6
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
4f55086f7dd0: Pull complete
Digest: sha256:f9078146db2e05e794366b1bfe584a14ea6317f44027d10ef7dad65279026885
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Hello from Docker! と表示されれば成功です。
初回はイメージのダウンロードが走りますが、次回以降はキャッシュが使われるので即座に起動します。


Step 2: Docker Engineの自動起動を確認する

WSL2はWindowsと一緒に起動しますが、サービスが自動起動するかどうかはsystemdの設定次第です。
まず現在の状態を確認します。

systemctl is-enabled docker
systemctl status docker
enabled
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Fri 2026-04-17 08:07:36 JST; 6min ago
   Main PID: 260 (dockerd)
     ...

enabled かつ active (running) であれば自動起動は設定済みです。

自動起動が設定されていない場合

disabled または inactive と表示された場合は以下を実行します。

① systemdを有効化する(/etc/wsl.conf を確認・作成)

cat /etc/wsl.conf

systemd=true の記載がなければ追記します。

sudo bash -c 'cat >> /etc/wsl.conf << EOF
[boot]
systemd=true
EOF'

PowerShellからWSL2を再起動します。

wsl --shutdown
wsl

② Dockerの自動起動を有効化する

sudo systemctl enable docker
sudo systemctl start docker

再度 systemctl status dockeractive (running) になっていれば完了です。


Step 3: VSCodeの拡張機能を設定する

拡張機能のインストール

VSCodeに以下の拡張機能をインストールします。

  • Dev Containers (ms-vscode-remote.remote-containers)
  • WSL (ms-vscode-remote.remote-wsl)

Dev Containers拡張の設定

Dev Containers 拡張の設定で Execute in WSL を有効にします。

  1. VSCodeの設定(Ctrl+,)を開く
  2. 検索欄に Execute in WSL と入力
  3. Dev > Containers: Execute In WSL にチェックを入れる

Execute in WSL設定画面

タイトルバーとステータスバーに 開発コンテナー: C++ Development と表示されている状態で確認すると、DevContainerとWSLが正しく連携していることがわかります。

補足:複数のPCでVSCodeの設定を同期している場合、この設定は同期から外しておくことをおすすめします(環境依存の設定のため)。


Step 4: C++用DevContainerを作成する

Windowsのエクスプローラーで作業フォルダを作成し、VSCodeで開きます。
ここでは C:\projects\hello-cpp とします。

.devcontainerフォルダの作成

VSCodeのターミナルで以下を実行します。

mkdir .devcontainer

devcontainer.jsonの作成

.devcontainer/devcontainer.json を以下の内容で作成します。

{
  "name": "C++ Development",
  "image": "mcr.microsoft.com/devcontainers/cpp:1-ubuntu-24.04",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-vscode.cpptools",
        "ms-vscode.cmake-tools",
        "xaver.clang-format"
      ],
      "settings": {
        "editor.formatOnSave": true
      }
    }
  },
  "postCreateCommand": "gcc --version && cmake --version"
}

ポイント

  • mcr.microsoft.com/devcontainers/cpp はMicrosoft公式のC++開発用イメージです
  • GCC、CMake、clang-formatがあらかじめ入っています
  • postCreateCommand でコンテナ起動後にバージョン確認が走ります

Step 5: DevContainerを起動する

  1. VSCodeの左下にある リモートメニュー>< アイコン)をクリック
  2. コンテナーで再度開く を選択

⚠️ 通知バナーの「コンテナーで再度開く」ボタンではなく、左下のリモートメニューから操作してください。パスの問題でエラーになる場合があります。

初回はイメージのダウンロードが走るので少し時間がかかります。
起動が完了すると、devcontainer.json に書いた拡張機能が自動でインストールされます。

Extension 'ms-vscode.cpp-devtools' v0.4.6 was successfully installed.
Extension 'ms-vscode.cmake-tools' v1.23.51 was successfully installed.
Extension 'ms-vscode.cpptools' v1.31.4 was successfully installed.

VSCodeのウィンドウ左下が 開発コンテナー: C++ Development に変われば起動成功です。
設定を書くだけでC++開発に必要な拡張機能が揃うのがDevContainerの便利なところです。


Step 6: Hello Worldを書いてビルドする

ソースファイルの作成

main.cpp を作成します。

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

ビルドと実行

DevContainer内のターミナルで実行します。

g++ -std=c++23 -o hello main.cpp
./hello
Hello, World!

C++23まで対応したGCCでコンパイルできています。


まとめ

項目 内容
Docker Desktop 不要(無料)
Docker Engine WSL2(Ubuntu)上にインストール
VSCode設定 Dev Containers拡張の「Execute in WSL」を有効化
C++イメージ mcr.microsoft.com/devcontainers/cpp
コンパイラ GCC(C++23対応)

Windows側にdocker.exeやdocker-compose.exeは不要です。
DevContainer開発においては、VSCodeがWSL2のDockerを直接操作するため、Windows側のDockerコマンドは使われません。


次回予告

第2弾 では、CMakeによるプロジェクト構成とvcpkgによるライブラリ管理を導入し、より本格的なC++開発環境を作ります。

  • CMakeLists.txt の書き方
  • vcpkgでEigenやGoogle Testを追加する
  • クロスプラットフォームなビルド設定

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?