wslcの使い方とコマンド一覧|Docker対比・設定チートシート

Windows標準のコンテナ実行機能である「WSL Containers(wslc.exe)」がWSL 3.0.1(2026年9月29日公開)で正式版(GA)となり、Docker Desktopをインストールしなくてもコマンドラインから直接Linuxコンテナのビルドや実行が可能になりました。

一方で、実際に wslc を使い始めると「Dockerのあのコマンドは wslc ではどう書くのか」「.wslconfig でメモリ制限を書いたのに反映されない」「wslc compose を実行したらエラーになった」といった疑問やハマりどころに直面しがちです。

この記事は、実機検証(wslc 3.0.3.0)とMicrosoft公式ドキュメントに基づき、10秒で目的のコマンドや設定値を引けるように設計した wslc の総合コマンド一覧・逆引きチートシートです。Dockerコマンドとの対比表、専用設定ファイル settings.yaml の全パラメータ、よくあるアンチパターン、さらに用途別の詳細ガイドへのリンクまでを集約しました。手元の辞書としてブックマークしてご活用ください。

  1. この記事でわかること
  2. 前提条件・対象読者
  3. 1. wslc Quick Reference:まず覚える基本10コマンド早見表
  4. 2. Docker → wslc コマンド置き換え対応表
    1. コンテナ・イメージ基本操作の対比
  5. 3. 仕組みの違いと「よくある間違い」(アンチパターン)
    1. アンチパターン1:メモリやCPU制限を .wslconfig に書いてしまう
    2. アンチパターン2:settings.yaml 変更後にセッションを再起動していない
    3. アンチパターン3:Windows側(Cドライブ)に置いたソースをLinux側からビルドする
    4. アンチパターン4:docker cp と同じ感覚で wslc cp と入力する
  6. 4. カテゴリ別コマンドリファレンス
    1. 1. コンテナ操作(wslc container)
    2. 2. イメージ・ビルド管理(wslc image)
    3. 3. ネットワーク・ボリューム・レジストリ管理
    4. 4. システム・セッション管理(wslc system / settings)
  7. 5. settings.yaml の全パラメータとリソース制限のベストプラクティス
    1. 設定パラメータ一覧(Microsoft公式仕様)
    2. おすすめの settings.yaml 設定例
  8. 6. 検索クエリ型FAQ(よくある質問)
    1. Q1. wslc でコンテナ内からWindowsホスト側のDBやローカルサーバーに接続するには?
    2. Q2. コンテナを使っていない時のメモリ消費はどうなりますか?
    3. Q3. wslc compose(Docker Compose)はいつ使えるようになりますか?
    4. Q4. C# や C++ のWindowsアプリから wslc を直接制御することはできますか?
  9. 7. 用途別・wslc 実践ガイド記事一覧(トピッククラスター)
  10. まとめ
  11. 本格的なサーバー運用ならVPSがおすすめ
  12. 次に読むおすすめ記事
  13. 参考情報

この記事でわかること

  • 日常の8割をカバーする「wslc 基本10コマンド早見表(Quick Reference)」
  • docker コマンドから wslc コマンドへの置き換え対応表と未対応機能(compose 等)
  • .wslconfig との混同やセッション再起動忘れなど、初心者が必ずハマるアンチパターン(❌と⭕の対比)
  • コンテナ、イメージ、ネットワーク、ボリューム、セッション管理のカテゴリ別コマンド一覧
  • %LOCALAPPDATA%\wslc\settings.yaml の全設定キーとデフォルト値・カスタマイズ手順
  • VS Code Dev Containers連携やDockerfileビルド、エラー対処など用途別詳細ガイドの案内

前提条件・対象読者

  • 対象OS:Windows 11(WSL 2.9.3以降が必須、正式版はWSL 3.0.1以降)
  • 対応バージョン:WSL 3.0.3.0 / wslc 3.0.3.0(最終確認:2026年11月)
  • 実行環境:PowerShell、Windows Terminal、またはWSL(Ubuntu等)内のシェル
  • バージョン確認コマンド:
# WSL本体のバージョン確認(2.9.3以上、推奨3.0.1以上)
wsl --version

# wslc CLIのバージョン確認
wslc version

# 古い場合は最新へアップデート
wsl --update

1. wslc Quick Reference:まず覚える基本10コマンド早見表

日常のコンテナ起動、確認、ビルド、掃除で最も頻繁に使う基本10コマンドの早見表です。

やりたいこと実行コマンド短縮形・別名(エイリアス)
動作確認(使い捨て実行)wslc run --rm hello-worldwslc container run --rm hello-world
対話型シェルで起動wslc run --rm -it ubuntu:latest bash-i(標準入力維持)+ -t(TTY割り当て)
バックグラウンドでポート公開起動wslc run -d -p 8080:80 --name web nginxlocalhost:8080 でアクセス可能
起動中のコンテナ一覧を表示wslc pswslc list, wslc ls, wslc container list
停止中を含む全コンテナを表示wslc ps -awslc container list --all
実行中コンテナ内でコマンド実行wslc exec -it web bashwslc container exec -it web bash
コンテナのログをリアルタイム追跡wslc logs -f webwslc container logs --follow web
コンテナの停止と削除wslc stop web && wslc rm webwslc remove, wslc delete
Dockerfileからイメージをビルドwslc build -t myapp:v1 .wslc image build -t myapp:v1 .
リソース設定ファイルを開くwslc settings%LOCALAPPDATA%\wslc\settings.yaml を起動

2. Docker → wslc コマンド置き換え対応表

wslc.exe はDocker CLIと高い互換性を持つように設計されており、ほぼすべての基本操作で先頭の docker を wslc に置き換えるだけで動作します。

コンテナ・イメージ基本操作の対比

操作内容Docker CLIwslc CLI(標準 / 短縮形)互換性と注意点
コンテナ作成・実行docker run [OPTIONS] IMAGEwslc run [OPTIONS] IMAGE⭕ -d, -p, -v, -e, --gpus 等に対応
コンテナ一覧表示docker ps [-a]wslc ps [-a] / wslc list⭕ --format json にも対応
コンテナ内コマンド実行docker exec -it ID CMDwslc exec -it ID CMD⭕ 同じオプション体系
コンテナ停止 / 起動 / 再起動docker stop / start / restartwslc stop / start / restart⭕ WSL 3.0.1で restart も追加
コンテナ削除docker rm [-f] IDwslc rm [-f] ID / wslc remove⭕ -v で匿名ボリューム同時削除
ファイルコピーdocker cp SRC DESTwslc container cp SRC DEST⚠️ トップレベル wslc cp ではなく wslc container cp
イメージ一覧表示docker images / docker image lswslc images / wslc image list⭕ --digests, --format json 対応
イメージ取得 / 送信docker pull / docker pushwslc pull / wslc push⭕ --all-tags 対応
イメージビルドdocker build -t TAG .wslc build -t TAG .⭕ --build-arg, --target, --secret 対応
イメージ削除docker rmi IMAGEwslc rmi IMAGE / wslc image rm⭕ -f(強制削除)対応
リソース統計表示docker statswslc stats⚠️ スナップショット表示(1回出力)
停止コンテナ・未使用イメージ掃除docker container/image prunewslc container/image prune⭕ -f で確認スキップ
複数コンテナ一括管理(Compose)docker compose up -d❌ 未実装(wslc 3.0.3.0 時点)⚠️ 2026年11月時点で wslc compose は開発中

3. 仕組みの違いと「よくある間違い」(アンチパターン)

wslc は通常のWSLディストリビューション(Ubuntu等)とは独立した「専用のコンテナセッションVM」上でコンテナを実行します。この仕様の違いを知らないと陥りやすい4つのアンチパターンをまとめました。

アンチパターン1:メモリやCPU制限を .wslconfig に書いてしまう

最も多い間違いが、WSL2用の .wslconfig を編集して wslc のメモリ使用量を制限しようとすることです。Microsoft公式ドキュメント(WSL container settings)に明記されているとおり、.wslconfig の設定は wslc のコンテナセッションには一切適用されません。

# ❌ 間違い例:C:\Users\<ユーザー名>\.wslconfig に書いても wslc には効かない
[wsl2]
memory=4GB
processors=2

wslc のリソース制限を変更する場合は、必ず wslc settings コマンドを実行して専用の設定ファイル(%LOCALAPPDATA%\wslc\settings.yaml)を編集します。

# ⭕ 正しい手順:wslc settings で開く %LOCALAPPDATA%\wslc\settings.yaml に記述する
session:
  cpuCount: 4
  memorySize: 8GB

アンチパターン2:settings.yaml 変更後にセッションを再起動していない

settings.yaml の session.*(CPU数、メモリサイズ、ディスクサイズ等)は、コンテナセッションの起動時に一度だけ読み込まれます。すでにバックグラウンドでセッションが稼働している状態では、ファイルを保存しただけでは新しい設定が反映されません。

# ❌ 間違い例:settings.yaml 保存後にそのまま wslc run を実行する(旧設定のまま動く)
wslc run --rm -it ubuntu:latest free -h

変更を即座に反映させるには、wslc system session terminate で既存のセッションを明示的に終了させてから次のコマンドを実行します。

# ⭕ 正しい手順:アクティブなセッションを確認して終了させ、新設定で再起動させる
wslc system session list
wslc system session terminate

# 次の wslc コマンド実行時に新しい設定でセッションが自動起動する
wslc run --rm -it ubuntu:latest free -h

アンチパターン3:Windows側(Cドライブ)に置いたソースをLinux側からビルドする

WSL(Ubuntu等)のターミナルから作業する際、プロジェクトファイルをWindows側のファイルシステム(/mnt/c/Users/...)に置いたままビルドやボリュームマウントを行うと、OS間のファイルシステム変換オーバーヘッドによりI/O速度が大幅に低下します。

# ❌ 間違い例:WSLターミナルから /mnt/c 配下のプロジェクトをビルドする(I/Oが遅い)
cd /mnt/c/Users/username/projects/myapp
wslc build -t myapp .

WSL内のLinuxツールやVS Code(Remote – WSL)と組み合わせて開発する場合は、Linux側のホームディレクトリ(~/projects/...)にソースコードを配置して実行するのが公式推奨のベストプラクティスです。

# ⭕ 正しい手順:WSLファイルシステム(~/)上にコードを置いてビルドする
cd ~/projects/myapp
wslc build -t myapp .

アンチパターン4:docker cp と同じ感覚で wslc cp と入力する

run や build、ps、exec にはトップレベルの短縮エイリアス(wslc run 等)が用意されていますが、コンテナ内外のファイルコピーを行う cp サブコマンドにはトップレベルエイリアスが存在しません。

# ❌ 間違い例:トップレベルに cp はないためエラーになる
wslc cp ./config.json web:/etc/app/config.json

ファイルをコピーする際は、必ず container を挟んで wslc container cp と記述します。

# ⭕ 正しい手順:wslc container cp を使用する
wslc container cp ./config.json web:/etc/app/config.json

4. カテゴリ別コマンドリファレンス

wslc 3.0.3.0 で実装されている全コマンドをカテゴリ別に整理しました。すべてのコマンドでグローバルオプション --session <セッション名> を指定可能です。

1. コンテナ操作(wslc container)

# バックグラウンド(-d)でポート転送(-p)と環境変数(-e)を指定して起動
wslc run -d --name api-server -p 3000:3000 -e NODE_ENV=production node:22-alpine

# ホストのディレクトリをコンテナへバインドマウント(-v)し、終了時に自動削除(--rm)
wslc run --rm -it -v ${PWD}:/workspace -w /workspace ubuntu:26.04 bash

# CPU数(--cpus)とメモリ上限(-m)をコンテナ単位で制限して実行
wslc run -d --name worker --cpus 2 -m 1G python:3.13-slim

# GPUをすべてコンテナにパススルーして実行
wslc run --rm -it --gpus all nvidia/cuda:12.6.0-base-ubuntu24.04 nvidia-smi

# 実行中のコンテナ一覧(JSON形式で出力)
wslc list --format json

# 実行中のコンテナ内で対話型シェルを起動
wslc exec -it api-server sh

# コンテナのログを末尾50行からタイムスタンプ付きでフォロー表示
wslc logs -f -n 50 -t api-server

# コンテナとホスト間でファイルをコピー
wslc container cp api-server:/app/output.log ./output.log

# コンテナのリソース使用状況(CPU・メモリ・I/O・PID)のスナップショットを表示
wslc stats

# コンテナの停止・開始・再起動・強制終了
wslc stop api-server
wslc start api-server
wslc restart api-server
wslc kill api-server

# コンテナの削除(-f で実行中でも強制削除、-v で匿名ボリュームも削除)
wslc rm -f -v api-server

# 停止しているすべてのコンテナを一括削除(-f で確認プロンプト省略)
wslc container prune -f

2. イメージ・ビルド管理(wslc image)

# Dockerfileからイメージをビルド(キャッシュ無効化 --no-cache、ビルド引数 --build-arg)
wslc build -t myapp:1.0.0 --build-arg APP_ENV=prod --no-cache .

# 別名のDockerfile(Containerfile等)やマルチステージのターゲットを指定してビルド
wslc build -f Dockerfile.dev --target builder -t myapp:dev .

# ローカルのイメージ一覧を表示(ダイジェスト付き)
wslc images --digests

# レジストリからイメージをプル / レジストリへプッシュ
wslc pull ubuntu:26.04
wslc push myregistry.azurecr.io/myapp:1.0.0

# イメージに新しいタグを付与
wslc tag myapp:1.0.0 myregistry.azurecr.io/myapp:latest

# イメージをtarアーカイブへ保存(save) / tarアーカイブから読み込み(load)
wslc save -o myapp_image.tar myapp:1.0.0
wslc load -i myapp_image.tar

# イメージの削除(rmi)と未使用イメージの一括削除(image prune -a)
wslc rmi myapp:dev
wslc image prune -a -f

3. ネットワーク・ボリューム・レジストリ管理

# カスタムネットワークの作成・一覧・詳細確認・削除
wslc network create my-net
wslc network list
wslc network inspect my-net
wslc network connect my-net api-server
wslc network disconnect my-net api-server
wslc network remove my-net
wslc network prune -f

# 名前付きボリュームの作成・一覧・詳細確認・削除
wslc volume create db-data
wslc volume list
wslc volume inspect db-data
wslc volume remove db-data
wslc volume prune -f

# コンテナレジストリへのログイン(標準入力から安全にPATを渡す例)
$env:CR_PAT | wslc login ghcr.io -u USERNAME --password-stdin
wslc logout ghcr.io

4. システム・セッション管理(wslc system / settings)

wslc 独自のシステム情報確認や、裏側で動くコンテナセッションVMを直接操作するコマンド群です。

# システム情報(ランタイムやカーネル情報)の表示
wslc info

# コンテナイベントのリアルタイム監視
wslc events

# 稼働中のコンテナセッション一覧を表示
wslc system session list

# コンテナセッションVMのシェルに直接アタッチ(デバッグ用)
wslc system session shell

# コンテナセッションを強制終了(settings.yaml の変更反映やメモリ即時解放に使用)
wslc system session terminate

# ユーザー設定ファイル(settings.yaml)を既定エディタで開く / 既定値にリセットする
wslc settings
wslc settings reset

5. settings.yaml の全パラメータとリソース制限のベストプラクティス

wslc settings を実行すると、%LOCALAPPDATA%\wslc\settings.yaml(展開例:C:\Users\<ユーザー名>\AppData\Local\wslc\settings.yaml)が生成されて開きます。

設定パラメータ一覧(Microsoft公式仕様)

すべての項目は未指定または default を指定した場合、以下の組み込みデフォルト値が適用されます。

設定キー指定可能な値デフォルト値役割・注意点
session.cpuCount正の整数全論理プロセッサコンテナセッションVMに割り当てる仮想CPUコア数(例:4)。
session.memorySizeサイズ表記Windows総メモリの50%セッションVMの最大メモリ量(例:8GB、4096MB)。2進数単位(1GB = 1024MB)。
session.maxStorageSizeサイズ表記1TBイメージやコンテナを格納する仮想ディスク(VHDX)の最大サイズ(例:250GB)。
session.storagePath絶対パス%LOCALAPPDATA%仮想ディスクの保存先ベースパス。<storagePath>\wslc\sessions\<session>\storage.vhdx に作成されます。
session.defaultBindingAddressIPv4アドレス127.0.0.1wslc run -p 8080:80 のようにIP省略時にバインドするホスト側アドレス。LAN内公開時は 0.0.0.0 に変更。
session.hostLoopbackドメイン文字列host.wslc.internalコンテナ内からWindowsホストへ通信するためのDNS名。無効化する場合は none を指定。
session.idleTimeout正の整数(秒)30コンテナがすべて停止してアイドル状態になってから、セッションVMが自動シャットダウンするまでの秒数。
credentialStorewincred / filewincredwslc login の認証情報の保存先。wincred はWindows資格情報マネージャー、file はDPAPI暗号化JSONファイル。

おすすめの settings.yaml 設定例

開発用PC(メモリ16GB〜32GB)で、ホスト側のメモリ圧迫を防ぎつつCドライブ以外のSSD(Dドライブ等)にコンテナデータを逃がしたい場合の推奨設定例です。

session:
  cpuCount: 4
  memorySize: 8GB
  maxStorageSize: 256GB
  storagePath: D:\wslc-storage
  defaultBindingAddress: 127.0.0.1
  hostLoopback: host.wslc.internal
  idleTimeout: 60
credentialStore: wincred

※注意:すでにコンテナやイメージが存在する状態で session.storagePath を変更しても、既存のデータは自動移動されません(新しいパスに空のセッションが新規作成され、旧パスの storage.vhdx はそのまま残ります)。保存先を変更する場合は、初期導入時か不要イメージを整理したタイミングで実施し、設定保存後に wslc system session terminate を実行してください。

6. 検索クエリ型FAQ(よくある質問)

Q1. wslc でコンテナ内からWindowsホスト側のDBやローカルサーバーに接続するには?

デフォルトで host.wslc.internal というホスト名が自動的に名前解決されます(Docker Desktopの host.docker.internal に相当)。コンテナ内から http://host.wslc.internal:5432 のように指定することで、Windowsホスト上で稼働しているサービスへ通信できます。

Q2. コンテナを使っていない時のメモリ消費はどうなりますか?

wslc のセッションVMにはアイドルタイムアウト機能(session.idleTimeout、デフォルト30秒)が備わっています。実行中のコンテナが0個になり30秒が経過すると、セッションVM自体が自動的にシャットダウンされ、メモリがWindowsホストへ解放されます。今すぐ手動で解放したい場合は wslc system session terminate を実行してください。

Q3. wslc compose(Docker Compose)はいつ使えるようになりますか?

2026年11月時点(wslc 3.0.3.0)では、wslc compose コマンドは未実装です。Microsoftの公式発表およびGitHubリポジトリ(microsoft/WSL)では最優先の次期開発機能として実装が進められています。現時点で compose.yaml を使った複数コンテナ構成が必要な場合は、WSLディストリビューション(Ubuntu等)内のDocker Engine(docker compose)を併用してください。

Q4. C# や C++ のWindowsアプリから wslc を直接制御することはできますか?

はい、Microsoft公式のNuGetパッケージ Microsoft.WSL.Containers(WSL container API)が提供されています。dotnet add package Microsoft.WSL.Containers で導入することで、C#やC++/WinRTのコード内から Session や Container オブジェクトを生成し、イメージのプルやコンテナの起動・標準入出力の取得をプログラムで制御できます。

7. 用途別・wslc 実践ガイド記事一覧(トピッククラスター)

当ブログでは、wslc の導入から実践活用、ベンチマーク比較、トラブル解決までをテーマ別に詳しく解説しています。目的に応じて以下の個別記事を参照してください。

まとめ

wslc(WSL Containers)は、Docker CLIと同じ感覚で扱える高い互換性と、アイドル時に自動でVMを停止してメモリを解放する軽量さを兼ね備えたWindows標準のコンテナ実行基盤です。

  • 基本操作は docker を wslc に読み替えるだけで実行でき、ファイルコピーのみ wslc container cp を使用する
  • リソース制限や保存先変更は .wslconfig ではなく、wslc settings で開く %LOCALAPPDATA%\wslc\settings.yaml で管理する
  • settings.yaml の変更後は wslc system session terminate でセッションを再起動すると即座に反映される
  • コンテナからWindowsホストへの通信には host.wslc.internal を使用する

日々のコンテナ開発でコマンドオプションや設定キーを確認したくなった際は、ぜひこのチートシートを見返して活用してください。

本格的なサーバー運用ならVPSがおすすめ

自宅のPCで構築したコンテナ環境をインターネット上に公開して本番運用するなら、初期費用無料で導入しやすい「さくらのVPS」などのクラウド環境が便利です。

PR

次に読むおすすめ記事

WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の総合ガイドもあわせて参考にしてください。

WSL2+Dockerで作るWindows開発環境構築まとめ
WindowsマシンでWeb開発やバックエンド開発、AIアプリ開発を行う際、いまや欠かせない標準構成となったのが「Windows + WSL2 + Docker + VS Code」の組み合わせです。かつては「Web開発といえばMac一択」…

参考情報