コンテンツにスキップ

WSL・Docker・Linux ガイド

Windows 開発者向けに、WSL・Docker・Linux の概要と使い分けをまとめる。


Linux とは何が良いのか

開発ツール・言語との相性が抜群

  • Python, Node.js, Ruby, Go などは Linux が第一ターゲット
  • apt install 一発でツールが入る(installer を探し回る必要なし)
  • パス区切りが /(開発ツールの大半がこれ前提)

サーバー=ほぼ Linux

  • クラウド(AWS, GCP, Azure)の実行環境はほぼ全て Linux
  • 本番環境と同じ OS で開発できる → 「本番でだけ動かない」が減る
  • Docker コンテナの中身も Linux

シェル(bash/zsh)が強力

  • grep, sed, awk, xargs をパイプで繋いで複雑な処理を一行で書ける
  • ネット上の情報量は bash が圧倒的に多い

パッケージ管理が楽

# Ubuntu の場合
sudo apt update && sudo apt install nginx postgresql redis

これだけで Web サーバー + DB + キャッシュが入る。

自動化・スクリプティングに強い

  • cron(定期実行)、systemd(サービス管理)が標準装備
  • CI/CD 環境(GitHub Actions 等)も Linux ベース

軽量・安定・無料

  • GUI なしなら非常に軽い。数ヶ月〜数年間再起動なしで安定稼働
  • OS 自体が無料(Ubuntu, Debian, Fedora 等)
  • オープンソースなので仕組みを学べる

逆に Windows の方が良い場面

場面 理由
Office / Excel 作業 Linux 版はない
Adobe 系ソフト Linux 非対応
ゲーム DirectX 対応は Windows が圧倒的
GUI アプリ全般 Windows/Mac の方が充実

WSL(Windows Subsystem for Linux)

概要

Windows 上で Linux 環境をそのまま動かせる仕組み。仮想マシンやデュアルブートは不要。

できること

  • Linux コマンド(apt, grep, bash, cron など)がすべて使える
  • VS Code と連携して Linux 上で開発できる
  • Docker の実行基盤として使える
  • Windows のファイルに /mnt/c/ 経由でアクセス可能

メリット

  • wsl --install だけでセットアップ完了(数分)
  • 従来の仮想マシンより圧倒的に軽量(CPU・メモリ消費が少ない)
  • Windows と Linux を行き来しながら作業できる
  • Linux 前提のツールやライブラリがそのまま動く

WSL1 と WSL2 の違い

項目 WSL1 WSL2
方式 システムコール翻訳 実際の Linux カーネル
互換性 一部非対応あり ほぼ完全
ファイルI/O Windows 側は速い Linux 側が速い
Docker 対応 不可 対応

これから始めるなら WSL2 一択

インストール方法

# 管理者モードの PowerShell で実行
wsl --install

初回起動時にユーザー名とパスワードを設定する。

起動方法

  • スタートメニューから「Ubuntu」を検索
  • またはコマンドプロンプト / PowerShell で wsl と入力

Docker

概要

アプリケーションとその実行環境をまるごと「コンテナ」にパッケージ化する技術。

できること

  • Dockerfile に環境構成を書くだけで、誰でも同じ環境を再現
  • 1台のPCで複数の独立した環境を同時に動かせる
  • Docker Hub から既成イメージ(PostgreSQL, Redis, nginx 等)をすぐ使える
  • CI/CD やクラウドデプロイと直結

メリット

  • 「自分のPCでは動くのに…」問題が消える — 環境差異がなくなる
  • コンテナは数秒で起動(仮想マシンは数分)
  • ホストOSを汚さずに色々な技術を試せる(不要になったら消すだけ)
  • チームで同じ開発環境を共有できる

基本用語

用語 説明
Dockerfile コンテナの「レシピ」。環境構成を記述するファイル
Image コンテナの設計図。コード・設定・ライブラリを含む
Container Image から作られた実行中のインスタンス
Docker Hub Image の共有リポジトリ(GitHub のようなもの)
docker-compose 複数コンテナをまとめて管理する仕組み

よくある使い方

# PostgreSQL をコンテナで起動
docker run -d --name mydb -e POSTGRES_PASSWORD=pass -p 5432:5432 postgres

# docker-compose で開発環境一式を起動
docker-compose up -d

# コンテナの停止・削除
docker-compose down

WSL vs Docker:比較と使い分け

項目 WSL Docker
目的 Windows で Linux を使う アプリ環境の標準化・配布
粒度 OS レベル(Linux 丸ごと) アプリ単位(コンテナ)
分離 ホストとファイル共有あり 各コンテナが完全に独立
向いている場面 個人の開発環境 チーム開発・本番デプロイ
状態の永続性 通常のOS同様に永続 コンテナ削除でリセット

使い分けの指針

  • WSL が向いている: Linux コマンドを手軽に使いたい、個人の開発環境構築
  • Docker が向いている: 環境の再現性・移植性が重要、チーム開発、本番デプロイ
  • 両方組み合わせ(推奨): WSL2 上で Docker を動かすのが Windows 開発者の主流

推奨セットアップ手順

Step 1: WSL2 をインストール

wsl --install

Step 2: Docker Desktop をインストール

  • Docker Desktop 公式サイト からダウンロード
  • インストール時に「Use WSL 2 based engine」が有効になっていることを確認

Step 3: VS Code の拡張機能を追加

  • WSL 拡張(Remote - WSL): WSL 上のファイルを VS Code で直接編集
  • Docker 拡張: コンテナの管理・操作を GUI で行える
  • Dev Containers 拡張: コンテナ内で VS Code を開いて開発できる

参考リンク