今回は、Windows10 がインストールされた PC に対して、WSL(Windows Subsystem for Linux)をインストールし、さらに、Ubuntu 24.04 をインストールしてみたいと思います。
それでは、やっていきます。
はじめに
私は普段は、Windows の PC に、VirtualBox をインストールして、Ubuntu や、Parrot OS をインストールして使っています。
VirtualBox に不満があるわけではないのですが、PC が非力ということもあり、CodeQL と VSCode の組み合わせで、非常に動作が遅く、さらに、正常に動作しないことが頻繁にありました。
一般的に、VirtualBox よりも WSL の方が、PC の負担が少ないと理解しています。そこで、今回、WSL に変えてみようと考えました。何度か WSL を入れたことはありますが、使い込んではいない状況です。まずは、公式ドキュメントを見ながらやってみます。
Microsoft の WSL の公式のドキュメントと思われるトップページです。
このドキュメントに沿って、進めたいと思います。
概要
現在は、WSL 1 から WSL 2 に移行しているようです。
また、VirtualBox と同時に動作させることは難しそうなことが書かれています。
(追記)後日談ですが、WSL と VirtualBox の併用は可能でした。現時点で、何も設定を変えておらず、両方が問題なく動作している状況です。
インストール可能なディストリビューションを表示できるようです。
まず、Windows PowerShell を起動します。
> wsl.exe --list --online インストールできる有効なディストリビューションの一覧を次に示します。 既定の分布は ' * ' で表されます。 'wsl --install -d <Distro>'を使用してインストールします。 NAME FRIENDLY NAME * Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS Ubuntu-24.04 Ubuntu 24.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.6 openSUSE Leap 15.6 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 openSUSE-Tumbleweed openSUSE Tumbleweed
また、現在インストールしているディストリビューションを表示できます。
まだ何もインストールしていないので、コマンドの使用方法が表示された?のでしょうか。
> wsl.exe --list --verbose Copyright (c) Microsoft Corporation. All rights reserved. 使用方法: wsl.exe [Argument] 引数: (以降、割愛)
WSL のバージョンを 2 に設定しておきます。現在どちらに設定されているのかを表示する方法は分かりませんでした。
どうやら失敗したようです。そんなコマンドは無い、ということで、コマンドの使い方を表示しているようです。上の実行も失敗してたんでしょうね。長いので表示してませんが、wslコマンドの使い方を見る限り、--set-default-version というオプションはありませんでした。
> wsl --set-default-version 2 Copyright (c) Microsoft Corporation. All rights reserved. 使用方法: wsl.exe [Argument] 引数: (以降、割愛)
管理者モードで、Windows PowerShell を起動してやってみましたが、結果は同じでした。よく分かりませんが、先に進みます。
WSLのインストール
「取り付ける」という項目の中に、「WSL のインストール」という項目があります。
こちらを参考に進めていきます。
BIOS の設定や、「Windows の機能の有効化または無効化」の設定については言及されていません。
本来は、BIOS の設定が必要です。
BIOS の設定は、PC の起動時に、F2キーや、DELキーなどを押すと、BIOS の設定を行う画面に移動できます。BIOS のメニューの構成は、PC のメーカーによって異なると思いますが、Virtualization Technology という項目を探して、Enabled に設定する必要があります。
また、「Windows の機能の有効化または無効化」についても設定が必要なはずです。具体的には、「Windows の機能の有効化または無効化」を検索して実行し、「Hyper-V」、「Linux用 Windowsサブシステム」、「仮想マシンプラットフォーム」を有効にする必要があるはずです。
VirtualBox を使う場合、これらが有効になっていると、普通は VirtualBox が動作しません。
まず、これらが有効になっていない状態で、「Ubuntu-24.04」をインストールしてみたいと思います。
(追記)こちらも後日談ですが、BIOS の Virtualization Technology は、VirtualBox だけを使用しているときから有効になっていました。「Windows の機能の有効化または無効化」は有効にしなくても、WSL は問題なく動作しています。
正常にインストールが完了したようです。
> wsl --install -d Ubuntu-24.04 インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 インストール中: Ubuntu 24.04 LTS Ubuntu 24.04 LTS はインストールされました。 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
再起動します。
再起動後も、インストールの続きが実行されました。しばらくして、インストールが完了すると、以下の画面が起動しました。

また、以下のように、ユーザ名とパスワードを入力する画面が起動しています。入力が完了すると、インストールした Ubuntu が使用できる状態になります。

気になっていたので、追加で確認します。
管理者として実行で、Windows PowerShell を起動します。
先ほどは、何も表示されませんでしたが、インストール後は、以下のように表示されました。
> wsl --list --verbose NAME STATE VERSION * Ubuntu-24.04 Running 2
Windows のメニューを表示すると、「Ubuntu-24.04」と、「Ubuntu 24.04.1 LTS」という項目が増えていました。とりあえず、「Ubuntu-24.04」の方を起動してみます。Ubuntu 24.04.1 LTS となってましたが、起動してみると、Ubuntu 24.04.2 LTS でした。

インストールとしては、うまくいったようです。
なお、インストール後、PC の起動時にどうなっているかを確認しました。上の wsl.exe --list --verbose と同じですが、今回は、短縮形のオプションを使います。
起動時は、WSL は停止していました。
> wsl -l -v NAME STATE VERSION * Ubuntu-24.04 Stopped 2
WSL の Ubuntu を起動するには、上で行ったように、Windows のメニューから起動するか、PowerShell などのターミナルから起動する方法があるようです。Windows のメニューから起動した後、wsl -l -v で確認すると、STATE がRunning に変化していました。PowerShell から起動すると手間ですし、設定を変えないと色も変なので、私の場合は、Windows のメニューから起動しています。
また、WSL は、複数のゲストOS をインストールすることが出来ます。そのうち、規定のゲストOS を設定することが出来ます。現在は、1つのゲストOS しかインストールしてないので、自動的に、Ubuntu-24.04 が規定のゲストOS に設定されています。上のリストのうち、ゲストOS の名前の前に * が付いてるのが、現在の規定のゲストOS です。
以下に、公式サイトの基本的な wslコマンドが説明されています。
また、以下に、よく使ういくつかの WSLコマンドを表にまとめておきます。
| WSLコマンド | 説明 | 備考 |
|---|---|---|
| wsl -l -v | 現在インストールしているゲストOS の一覧を表示する | |
| wsl -l -o | インストール可能な OS を一覧表示する | |
| wsl | 規定のゲストOS を起動する | Windowsの現在のディレクトリで起動します |
| wsl -d <Distribution Name> | 指定のゲストOS を起動する | |
| wsl ~ | 規定のゲストOS をホームディレクトリで起動する | ゲストOS のホームディレクトリで起動します |
| wsl -t <Distribution Name> | 指定したゲストOSを終了する | 再起動する方法はないと思うので、これと起動を組み合わせる必要があります |
| wsl --shutdown | 仮想マシンを終了する | 再起動するときは、PowerShell で、これと wslコマンドを組み合わせます |
| wsl --set-default <Distribution Name> | 規定のゲストOS を指定する | 規定のゲストOS を変更できます |
| wsl --unregister <Distribution Name> | 指定したゲストOS をアンインストールする | |
| wsl -v | WSLのバージョンを表示する |
WSL固有の操作や設定
以下のページを参考に進めていきます。
Windows⇔WSLアクセス方法
Windows から Ubuntu 24.04.1 LTS(以下、Ubuntu)のファイルシステムにアクセスする方法です。
WSL のプロンプトから explorer.exe . と入力すると、下図のように、Windows のエクスプローラが起動し、Ubuntu のホームディレクトリが表示されます。

参考サイトにも書かれているように、エクスプローラのアドレスバーに、直接 \\wsl$ と入力して、Ubuntu のファイルシステムにアクセスすることも出来ます。
逆に、WSL(Ubuntu)から、Windows のファイルシステムは、/mnt/c/xxx でアクセスできます。試しに、catコマンドで、Users 以下のファイルにアクセスしてみましたが、問題なく表示できました。
WSLのネットワーク
次に、ネットワークです。
インストール後は以下のようになっています。
IPアドレスは、172.21.136.236/20 です。ネットワーク部のビット数が 20ビットです。IPアドレスを、16進数にすると、0xAC 0x15 0x88 0xEC であり、0xAC 0x15 0x80 までがネットワークアドレスになります。一方、ホスト部は、0x08 0xEC になります。ブロードキャストアドレスは、172.21.143.255 であり、16進数にすると、0xAC 0x15 0x8F 0xFF です。ホスト部が、全て 1 になってますね。
~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:d9:29:92 brd ff:ff:ff:ff:ff:ff inet 172.21.136.236/20 brd 172.21.143.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::215:5dff:fed9:2992/64 scope link valid_lft forever preferred_lft forever
一方、Windows側をコマンドプロンプトの「ipconfig」で確認すると、同じネットワークアドレスの 172.21.128.1(16進数にすると、0xAC 0x15 0x80 0x01 → ゲートウェイアドレス?)が増えていました。VirtualBox のホストオンリーアダプタに相当する機能は入っていそうです。
下で openssh-server をインストールしたところ、teraterm で、Widnows から Ubuntu に SSHログインできました。
いろいろやってみて感じたのは、Windowsターミナルより、teraterm で SSHログインして操作した方が、圧倒的に軽快に動作します。
WSLの詳細設定
以下の公式サイトのページを参考にします。
.wslconfig
.wslconfig は、WSL にどれぐらいのリソース(物理プロセッサや物理メモリ)を割り当てるのか、などのシステムの設定を行うことができます。
.wslconfig は、デフォルトでは存在していないようで、デフォルト値と異なる設定にした場合に、ファイルが作られるようです(ユーザディレクトリの直下に生成されました)。
WSL Settings
しかし、設定は、直接ファイルを編集するのではなく、下図のように、GUI の設定プログラム(WSL Settings)で設定するように書かれています。

WSL Settings は以下のような感じです。

ネットワークの設定は、以下です。
VirtualBox でも、NATモード、ブリッジモードがありました。WSL では、ブリッジモードは非推奨な設定になったようです。代わりに、Mirrored というモードがあり、これは、ホストPC(Windows)と同じ IPアドレスを使って、WSL の VM(Ubuntu など)に直接アクセスできる、というものです。この Mirroredモードが設定に追加された当初は、Docker のコンテナに対して、アクセスできないなどのトラブルがあったそうですが、現状は、Docker側が対応して、問題なく使えるそうです。
例えば、SSH で 22番ポートでアクセスした場合に、Windows と WSL の VM のどちらに接続されるのか、両方のサーバにリクエストが行って、応答した方が使われるのか、など、少し興味があります。

ネットワークモードをMirroredにしてWSLのSSHサーバに接続させる
設定を Mirrored に変更してみます。WSL内の SSHサーバを使いたいので、ネットワークモードの下にある、「Hyper-V ファイアウォールが有効」をオフにしておきます。これがオンのままだと、Windows のファイアウォール以外に、この設定も変更しなければならなくなりそうで、面倒なので、オフにしておきます(あとで分かりましたが、システム側で自動でオンになってしまうようです。Hyper-V ファイアウォールが有効でも特に問題なく、SSHサーバに接続できました)。
WSL が起動されてる場合は、PowerShell から $ wsl --shutdown を実行して終了します($ wsl -t Ubuntu-24.04 では反映されてなかった気がします)。その後、$ wsl(Ubuntu-24.04 が規定ではない場合は、$ wsl -d Ubuntu-24.04)で起動します。ネットワークは、以下のようになりました。
WSL の Ubuntu24.04 の IPアドレスは、172.21.136.236/20 でしたが、Windows と同じ、192.168.3.43/24 に変わりました。
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 10.255.255.254/32 brd 10.255.255.254 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 0c:37:96:99:83:8e brd ff:ff:ff:ff:ff:ff inet 192.168.3.43/24 brd 192.168.3.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 2400:2650:3d01:ba00:12d9:da86:3db5:7b8/64 scope global nodad deprecated noprefixroute valid_lft forever preferred_lft 0sec inet6 2400:2650:3d01:ba00:2457:c435:6c8:5ba6/128 scope global nodad noprefixroute valid_lft forever preferred_lft forever inet6 fe80::821:9406:425d:4ac0/64 scope link nodad noprefixroute valid_lft forever preferred_lft forever 3: loopback0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:15:5d:07:b7:db brd ff:ff:ff:ff:ff:ff 4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether b8:f7:75:11:00:03 brd ff:ff:ff:ff:ff:ff
WSL の Ubuntu24.04 には、SSHサーバを既にインストール済みです。あとは、Windows のファイアウォールの設定が必要です。
Windows 11 の設定 → セキュリティの中の Windowsセキュリティ → ファイアウォールとネットワーク保護 → 詳細設定 に進みます。すると、以下のような画面が出ます。
WSL の Ubuntu 24.04 の SSHサーバを別PC から接続させるために、ポート 22番を受信できるようにします。受信の規則をクリックして、新しい規則... をクリックします。

「規則の種類」を聞かれるので、「ポート」にチェックを入れて、「次へ」をクリックします。次に、「TCP」と「UDP」があるので、「TCP」にチェックを入れて、「特定のローカルポート」に「22」を入力して、「次へ」をクリックします。「接続を許可する」にチェックを入れて、「次へ」をクリックします。「ドメイン」と「プライベート」と「パブリック」にチェックが入っているので、いったん、そのままで、「次へ」をクリックします(パブリックを許可するのは危険だと思うので、注意してください)。設定の名前を聞かれるので、任意の名前(私は、TCP SSH としました)を入力して、「完了」をクリックします。

この時点で、22番ポートが開放されたので、別PC からアクセスしてみます。無事に SSH でアクセスすることが出来ました。
$ ssh ubuntu@192.168.3.43 The authenticity of host '192.168.3.43 (192.168.3.43)' can't be established. ED25519 key fingerprint is SHA256:JS+vakwgOlyEvhRZ4MPXy+1XYodBexZ6CSilVp54sOI. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.3.43' (ED25519) to the list of known hosts. ubuntu@192.168.3.43's password: Welcome to Ubuntu 24.04.3 LTS (GNU/Linux 6.6.87.2-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro System information as of Sun Nov 9 20:49:08 JST 2025 System load: 0.0 Usage of /: 1.4% of 1006.85GB Memory usage: 6% Swap usage: 0% Processes: 30 Users logged in: 1 IPv4 address for eth0: 192.168.3.43 IPv6 address for eth0: 2400:2650:3d01:ba00:12d9:da86:3db5:7b8 IPv6 address for eth0: 2400:2650:3d01:ba00:2457:c435:6c8:5ba6 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s just raised the bar for easy, resilient and secure K8s cluster deployment. https://ubuntu.com/engage/secure-kubernetes-at-the-edge Last login: Sun Nov 9 20:25:04 2025 from 192.168.3.2 ubuntu@Lenovo-IdeaPad(533) ~ [1:0]$
WSLにUSBデバイスを認識させる方法
WSL に USBデバイスを接続する方法が説明されている、Microsoft の公式サイトが以下です。
ここを参考に進めていきます。
USB/IP オープンソースプロジェクトの usbipd-win というツールを使うようです。
以下の usbipd-win のリリースページから、usbipd-win のインストーラをダウンロードするようです。
私がダウンロードした時点の最新は、usbipd-win 5.3.0 で、ファイル名は、usbipd-win_5.3.0_x64.msi でした。
ダブルクリックしてインストーラを起動します。特に選択肢はなく、Install をクリックするだけでインストールできました。
PowerShell で、試してみると、接続している USBデバイスの一覧が表示されました。
PS C:\Users> usbipd.exe list Connected: BUSID VID:PID DEVICE STATE 1-4 0bda:8153 Realtek USB GbE Family Controller Not shared 2-9 04f2:b829 Integrated Camera, Integrated IR Camera, Camera DFU Device Not shared 2-10 8087:0026 インテル(R) ワイヤレス Bluetooth(R) Not shared 4-1 413d:2107 USB 入力デバイス Not shared 4-2 046d:c08b G502 HERO, USB 入力デバイス, 仮想 HID フレームワーク (VHF... Not shared 4-3 1c4f:0027 USB 入力デバイス Not shared 4-4 346d:5678 USB 大容量記憶装置 Not shared Persisted: GUID DEVICE
WSL で USBデバイスを使えるようにするには、バインドとアタッチの 2段階を行う必要があるようです。
まずは、バインドです。これを行うには、管理者権限が必要なので、PowerShell を管理者権限で起動します。WSL に共有したいデバイスの BUSID を指定して、bind を実行します。バインドすると、Not Shared から Shared に変化しました。この時点で、WSL側で lsusbコマンドを実行しましたが、USBデバイスを認識できませんでした。
PS C:\Users> usbipd.exe bind --busid 4-4 PS C:\Users> usbipd.exe list Connected: BUSID VID:PID DEVICE STATE 1-4 0bda:8153 Realtek USB GbE Family Controller Not shared 2-9 04f2:b829 Integrated Camera, Integrated IR Camera, Camera DFU Device Not shared 2-10 8087:0026 インテル(R) ワイヤレス Bluetooth(R) Not shared 4-1 413d:2107 USB 入力デバイス Not shared 4-2 046d:c08b G502 HERO, USB 入力デバイス, 仮想 HID フレームワーク (VHF... Not shared 4-3 1c4f:0027 USB 入力デバイス Not shared 4-4 346d:5678 USB 大容量記憶装置 Shared Persisted: GUID DEVICE
次に、アタッチです。こちらは、管理者権限は必要ないようです。アタッチすると、Shared から Attached に変化しました。
PS C:\Users> usbipd.exe attach --wsl --busid 4-4 usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions. usbipd: info: Loading vhci_hcd module. usbipd: info: Detected networking mode 'mirrored'. usbipd: info: Using IP address 127.0.0.1 to reach the host. PS C:\Users> usbipd.exe list Connected: BUSID VID:PID DEVICE STATE 1-4 0bda:8153 Realtek USB GbE Family Controller Not shared 2-9 04f2:b829 Integrated Camera, Integrated IR Camera, Camera DFU Device Not shared 2-10 8087:0026 インテル(R) ワイヤレス Bluetooth(R) Not shared 4-1 413d:2107 USB 入力デバイス Not shared 4-2 046d:c08b G502 HERO, USB 入力デバイス, 仮想 HID フレームワーク (VHF... Not shared 4-3 1c4f:0027 USB 入力デバイス Not shared 4-4 346d:5678 USB 大容量記憶装置 Attached Persisted: GUID DEVICE
WSL で lsusbコマンドを実行してみます。
lsusbコマンドを使うには、usbutils をインストールする必要があります。私は既にインストールしていましたが、一応、インストール方法も貼っておきます。
lsusbコマンドを実行した結果、先ほどバインド、アタッチした USBメモリが認識できました。
$ sudo apt install usbutils $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 346d:5678 Biwin USB Device Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
USBデバイスを使い終わったら、以下のデタッチを PowerShell側で実行するか、物理的に切断すればいいようです。
Attached から Shared に戻りました。
PS C:\Users> usbipd.exe detach --busid 4-4 PS C:\Users> usbipd.exe list Connected: BUSID VID:PID DEVICE STATE 1-4 0bda:8153 Realtek USB GbE Family Controller Not shared 2-9 04f2:b829 Integrated Camera, Integrated IR Camera, Camera DFU Device Not shared 2-10 8087:0026 インテル(R) ワイヤレス Bluetooth(R) Not shared 4-1 413d:2107 USB 入力デバイス Not shared 4-2 046d:c08b G502 HERO, USB 入力デバイス, 仮想 HID フレームワーク (VHF... Not shared 4-3 1c4f:0027 USB 入力デバイス Not shared 4-4 346d:5678 USB 大容量記憶装置 Shared Persisted: GUID DEVICE
WSL に USBデバイスを認識させる方法は以上です。
WSLのUbuntuの環境構築
Ubuntu の初期設定は、通常の Ubuntu と同じ方法で設定していきます。
- .bashrc の設定
- .inputrc の追加、.gitconfig の追加
- visudo の設定(ubuntu ALL=(ALL) NOPASSWD:ALL)
- openssh-server のインストール
- lv のインストール
- tree のインストール
- build-essential のインストール
これらについては、以下の記事を参照してください。
daisuke20240310.hatenablog.com
VSCodeでWSLに接続
VSCode で WSL(Ubuntu)に接続してみます。
VirtualBox の場合は、Windows のユーザディレクトリの .sshディレクトリの configファイルに設定する必要がありましたが、WSL では、何も設定しなくても接続できました。普通は、ユーザ名とパスワードを聞かれますが、それもありませんでした。samba をインストールしなくていいところでも感じましたが、この辺はさすがに楽ですね。
一応、やり方は、VSCode を起動して、サイドバーのアイコンから、リモートエクスプローラを開きます。WSLターゲットという項目があるので、それをクリックすると繋がりました。
今のところ、全くトラブルはありません。
CodeQL を動かしてみます。VirtualBox の Parrot OS に、Windows の VSCode をリモート接続して、あるクエリ(VeryLikelyOverrunWrite.ql)を実行したときは、10分ぐらいかかりました。
今回、WSL の Ubuntu に、同じように VSCode でリモート接続して、同じクエリ(VeryLikelyOverrunWrite.ql)を実行したところ、5分ぐらいで完了しました。早いとは言えませんが、だいぶ快適になりました。
Dockerをインストール
以下の公式の手順に従って、Docker をインストールしていきます。
最初に、curl がインストールされているかを確認します。
インストールされていたので、次に、Docker をインストールします。WSL を検知したので、Docker Desktop for Windows を使うように勧めてきます。Docker Desktop を使う場合は、Ctrl+C を押して、このインストールを止めるように言われます。しかし、Docker Desktop は、企業では無償で使うことが出来ないため、私は使いません。20秒ほど待つと、Docker のインストールが始まります。
無事にインストールが完了したようです。
$ which curl /usr/bin/curl $ curl -fsSL https://get.docker.com/ | sh # Executing docker install script, commit: 7d96bd3c5235ab2121bcb855dd7b3f3f37128ed4 WSL DETECTED: We recommend using Docker Desktop for Windows. Please get Docker Desktop from https://www.docker.com/products/docker-desktop/ You may press Ctrl+C now to abort this script. + sleep 20 + sudo -E sh -c apt-get -qq update >/dev/null + sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates curl >/dev/null + sudo -E sh -c install -m 0755 -d /etc/apt/keyrings + sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" -o /etc/apt/keyrings/docker.asc + sudo -E sh -c chmod a+r /etc/apt/keyrings/docker.asc + sudo -E sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" > /etc/apt/sources.list.d/docker.list + sudo -E sh -c apt-get -qq update >/dev/null + sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin docker-model-plugin >/dev/null + sudo -E sh -c docker version Client: Docker Engine - Community Version: 29.1.1 API version: 1.52 Go version: go1.25.4 Git commit: 0aedba5 Built: Fri Nov 28 11:33:04 2025 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 29.1.1 API version: 1.52 (minimum version 1.44) Go version: go1.25.4 Git commit: 9a84135 Built: Fri Nov 28 11:33:04 2025 OS/Arch: linux/amd64 Experimental: false containerd: Version: v2.2.0 GitCommit: 1c4457e00facac03ce1d75f7b6777a7a851e5c41 runc: Version: 1.3.4 GitCommit: v1.3.4-0-gd6d73eb8 docker-init: Version: 0.19.0 GitCommit: de40ad0 ================================================================================ To run Docker as a non-privileged user, consider setting up the Docker daemon in rootless mode for your user: dockerd-rootless-setuptool.sh install Visit https://docs.docker.com/go/rootless/ to learn about rootless mode. To run the Docker daemon as a fully privileged service, but granting non-root users access, refer to https://docs.docker.com/go/daemon-access/ WARNING: Access to the remote API on a privileged Docker daemon is equivalent to root access on the host. Refer to the 'Docker daemon attack surface' documentation for details: https://docs.docker.com/go/attack-surface/ ================================================================================ $ docker -v Docker version 29.1.1, build 0aedba5 $ docker compose version Docker Compose version v2.40.3
スクリプトを 1つ実行するだけでインストールできるようになったので、以前に比べると、だいぶ楽になりました。
ユーザ権限で、Dockerコマンドを実行するようにします。
sudo usermod -aG docker $USER
設定を反映するには、一度、ログアウトする必要があります。WSL でログアウトする方法が分からなかったので、WSL を再起動します。WSL には再起動する方法はないと思うので、一度シャットダウンして、再度起動します。以下は、PowerShell を起動して実行しました。
> wsl --shutdown > wsl
動作を確認してみます。
$ docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 17eec7bbc9d7: Pull complete ea52d2000f90: Download complete Digest: sha256:f7931603f70e13dbd844253370742c4fc4202d290c80442b2e68706d8f33ce26 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
Docker のインストールは完了しました。
おわりに
今回は、だいぶ遅ればせながらではありますが、WSL(Ubuntu 24.04)を導入しました。非力な PC で、VirtualBox を使っていたこともあり、WSL の快適さに驚きました。
VirtualBox との併用(同時に使えなくてもいい)では、結局、「Windows の機能の有効化または無効化」は変更しなくても、WSL は使えました。
今後、WSL 特有のトラブルがあるのかもしれませんが、その時は、この記事に追記しようと思います。
最後になりましたが、エンジニアグループのランキングに参加中です。
気楽にポチッとよろしくお願いいたします🙇
今回は以上です!
最後までお読みいただき、ありがとうございました。