あさからDockerもWSL2(Windows Subsystem for Linux)もUbuntuも動かなくなってローカルで作っていたデザインとかシステムとか全滅かと思った日です。
ここから中身のデータを消さずに復旧するまでの流れを解説します。
同じ症状になったあなたの助けになれば幸いです。
目次
Docker+WSL2(Ubuntu)が動かない主な原因
- WSL2の設定やバージョンの不整合
- WindowsのバージョンやWSL2のバージョンが古い場合に発生します。
- Hyper-Vや仮想化関連の設定が無効
- WSL2はHyper-Vに依存しているため、仮想化機能が無効化されているとエラーが発生します。
- WSL2のネットワークやシステムの不整合
- DockerやWSL2が内部で使用する設定ファイルやネットワークが壊れている可能性があります。
- 更新やアップグレードによる不具合
- Windows Update後に互換性の問題が発生する場合があります。
このへんの問題が多々あります。
まずは、動いているのかを確認します。
Dockerが動いているのかを確認
WindowsPowerShellを起動して
docker info
にてそれぞれどの様に表示されるかチェックします。
docker info
Server:
ERROR: error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine/v1.47/info": open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified.
errors pretty printing info
このエラーは、Docker Desktop for Windows が WSL2 ベースのエンジンに接続できないことを示しています。
原因としては、Docker Desktop の設定、WSL2 の構成、または仮想化機能に問題がある可能性があります。
WSL2が動いているのかを確認
DockerはWSL2上で動作するため、まずWSL2の状態を確認します。
wsl --list --verbose
wsl --list --verbose
NAME STATE VERSION
* Ubuntu Stopped 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
WSL2で動作するのを確認。stoppedなので動作は止まっている。
どうやらUbuntuが起動してないだけの様だが立ち上がらない。
WSL2アップデートを実行
wsl --update
これでアップデートが開始されます。
Docker内のデータに影響はありません。安心して!
WSL2のインストールを実行
wsl --install
このコマンドは、WSLの基本機能と最新のLinuxカーネルをインストールするためのものであり、すでに設定済みのディストリビューションには影響を与えません。
- このコマンドは、WSLが未インストールの場合に
初めて適用されるフルインストール手順を開始します。 - WSLがすでにインストールされている場合、
必要なパッケージのアップデートや不足部分の再構成を行います。
WSL2のインストールを実行した結果エラーだった場合
PowerShellで実行したがエラーになった。そんなときは
wsl --install
Ubuntu は既にインストールされています。
Ubuntu を起動しています...
この要求はサポートされていません。
エラー コード: Wsl/Service/CreateInstance/CreateVm/HCS/0x80070032
Press any key to continue...
このエラーは、WSL2自体が正常に動作していないことを示しています。
この場合、Ubuntuのインストール状態に問題はありませんが、WSL2の構成やWindowsの仮想化機能に問題がある可能性が高いです。
仮想化プラットフォームとWSL機能を再有効化
PowerShellの管理者権限で実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
仮想化機能を有効化します。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
展開イメージのサービスと管理ツール
バージョン: 10.0.22621.2792
イメージのバージョン: 10.0.22631.4460
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
展開イメージのサービスと管理ツール
バージョン: 10.0.22621.2792
イメージのバージョン: 10.0.22631.4460
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
仮想化プラットフォームとWSL機能を再有効化したらパソコンを再起動
ご自身のパソコンを再起動します。
WSLのカーネルを最新にアップデート
wsl --update
wsl --set-default-version 2
再起動後の状況を確認
wsl --list --verbose
NAME STATE VERSION
* Ubuntu Stopped 2
docker-desktop Stopped 2
docker-desktop-data Stopped 2
Ubuntuの起動
wsl -d Ubuntu
このコマンドでUbuntuが起動できます。コマンドを実行すると
wsl -d Ubuntu
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
wsl -d Ubuntu
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Ubuntuが正常に起動しているので、WSL自体の問題は解決しましたね。
Dockerをコマンドから起動する場合
$ sudo service docker start
Dockerをコマンドから起動するならsudo service docker startのコマンドを入力します。
Docker Desktopならアプリアイコンをクリックするだけですね。
Docker起動してないとエラー
Docker起動してないとエラーになります。
Ubuntuサーバー内でのコマンド
$ docker info
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
Docker起動してからの表示は
$ docker info
Client:
Version: 27.2.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
~~~って続きます
最後にUbuntuもアップデート・アップグレード
$ sudo apt update
$ sudo apt upgrade
この2つのコマンドをそれぞれ入れてアップデート、アップグレードしておきます。
Docker+WSL2(Ubuntu)が動かないWsl/Service/CreateInstance/CreateVm/HCS/0x80070032が出たときに手順まとめ
今回行ったコマンドまとめ
PowerShellで
wsl --update
wsl --install
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
wsl -d Ubuntu
Ubuntuのサーバー内で
$sudo service docker start
$sudo apt update
$sudo apt upgrade
これで無事に起動しました。