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 が圧倒的に多い
パッケージ管理が楽¶
これだけで 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 一択
インストール方法¶
初回起動時にユーザー名とパスワードを設定する。
起動方法¶
- スタートメニューから「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 をインストール¶
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 を開いて開発できる