Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Linux Ubuntu

DockerのためにWindowsのWSL2にUbuntuをインストールし連携させる方法

Windows+WSL2+DockerのためにUbuntuは必要なのかどうかと、Ubuntuをインストールする方法の解説

いわゆるモダンな開発環境の1つとして人気のコンテナアプリの1つDockerですが、WindowsではDocker Desktop for WindowsというGUIで操作できるアプリ(ソフト)が用意されていますので、それを使うのが一般的かと思います。

WindowsでそのDockerを使う場合に、LinuxディストリビューションをWindows+WSL2の環境にインストールしておいたほうがいいことが多いです。

今回の記事ではWindows上のDockerのために、

  • WindowsのWSL2を使ってLinuxディストリビューションの1つであるUbuntuをインストールする手順
  • 関連パッケージをふくめてアップデートする手順
  • Ubuntuのバージョンを確認する方法
  • インストールしたUbuntuをDockerと連携させる方法

などを詳しく解説します。

WindowsのDocker Desktop for WindowsにLinuxディストリビューションが必要なのか?

Docker Desktop for Windowsのインストール時に、WSL2もインストールするかどうかたずねられ、それをインストールする必要があります

このWSL2は、WindowsにおいてLinuxやLinux用アプリを動かすための環境です。そしてWSL2そのものにLinuxの最低限の機能が含まれています。

このWSL2があればDocker Desktop for Windowsが動きます。それゆえ、Docker公式ドキュメントでは、

Docker Desktop では何らかの Linux ディストリビューションをインストールする必要はありません。

このように書かれています。

しかし、同時に、

しかしながら、最高の開発体験を得るためには、少なくとも1つのディストリビューションを追加し、次のようにして Docker サポートを有効化するのを推奨します。

とも書かれています。したがって、なんらかのLinuxディストリビューションを1つインストールしましょう。今回は、Linuxディストリビューションの1つとして、Ubuntuを以下の手順でインストールしていきます。

Windows+WSL2+Docker環境にUbuntuをインストールする手順

参考資料

マイクロソフト公式ページ:WSL を使用して Windows に Linux をインストールする

マイクロソフト公式:WSL を使用して Windows に Linux をインストールする

前提:WSL2のインストール完了

まず前提としてWSL2のインストールが必要です。

その方法として、

という2種類があります。

1つ目の場合だと、WSL2インストール → Linuxディストリビューションインストール → Docker Desktop for Windowsインストールという流れになります。

2つ目の場合だと、Docker Desktop for Windowsインストール(ついでにWSL2インストール) → Linuxディストリビューションインストールという流れなります。

どちらの場合についても必要となるDocker Desktop for Windowsのインストール自体についてはこの記事を参考にしてください

使用可能なディストリビューションの一覧を表示

今回は上述のようにWSL2をインストールし終えたことを前提として、その後にUbuntuをインストールします。

まずUbuntuの他にどのようなLinuxディストリビューションが利用できるのか見てみましょう。

コマンドプロンプトを立ち上げて、次のコマンドを入力して実行します。

wsl --list --online

こうすると、私の場合は2023年5月13日時点で、次のようになりました。

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
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4                     openSUSE Leap 15.4
openSUSE-Tumbleweed                    openSUSE Tumbleweed

Ubuntuが最上段に表示されていますね。このUbuntuをインストールしていきます。

UbuntuのWindowsへのインストール

Linuxディストリビューションのインストール用のコマンドは、

wsl --install -d <DistroName>

という形式となります。今回は、

  • <DistroName>→Ubuntu

と置き換え、

wsl --install -d Ubuntu

とします。

C:\Users\○○○○>wsl --install -d Ubuntu

こんな感じです。実行するとインストールが始まり、

インストール中: Ubuntu
[==========================51.0%

こんな表示が出てきます。しばらくすると、

how to install Ubuntu on Windows
C:\Users\○○○○>wsl --install -d Ubuntu
インストール中: Ubuntu
Ubuntu はインストールされました。
Ubuntu を起動しています...

このようにUbuntuが起動されます。

Ubuntu on Windows

Ubuntu専用のユーザー名とパスワードの設定

このようにUbuntuが起動すると、次にユーザー名とパスワードの登録作業となります。これらについては、まずこのマイクロソフト公式の説明を読んでみてください。

マイクロソフト公式:Linux のユーザー名とパスワードを設定する

WSL を使用して Linux ディストリビューションをインストールするプロセスが完了したら、[スタート] メニューを使用してディストリビューション (既定では Ubuntu) を開きます。 Linux ディストリビューションのユーザー名パスワードの作成を求められます。

  • このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。
  • パスワードを入力すると、画面に何も表示されませんのでご注意ください。 これはブラインドタイピングと呼ばれます。 入力している内容は表示されません。これは完全に正常です。
  • ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。
  • このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。
  • WSL で実行されている各 Linux ディストリビューションには、独自の Linux ユーザー アカウントとパスワードがあります。 ディストリビューションの追加、再インストール、再設定を行うたびに、Linux ユーザー アカウントを構成する必要があります。

当然ながらみなさんが使っているWindowsのユーザー名とパスワードとは全く別の扱いとなります。

まずはユーザー名とパスワードを考え、メモ帳か何かにメモしたり保存しておきましょう。

さて、Ubuntuが上のように起動した画面ではこのように表示されています。

Installing, this may take a few minutes...
この操作を完了できませんでした。再実行してください。
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: 

この、

Enter new UNIX username: 

のあとに、ユーザー名を入力して決定です。たとえば、ユーザー名が「hogehoge」ならば、

Enter new UNIX username: hogehoge

と入力して決定です。続いて次のようにパスワードの登録の表示が出てきます。

New password:

この部分ですが、どんな文字を入力してもセキュリティ上表示されないようになっています。メモ帳などをみながら正確に入力しましょう。続いて、確認のために再び同じパスワード入力が必要となります。

Retype new password:

ここも入力しても何も表示されないので、正確に入力しましょう。(なお、パスワードを忘れても、パスワード変更などの手段が用意されているので安心してください)

これらに成功すると、

Installation successful!
Linux 用 Windows サブシステムが Microsoft Store で入手可能になりました。
'wsl.exe --update' を実行するか、https://aka.ms/wslstorepage にアクセスしてアップグレードできます
Microsoft Store から WSL をインストールすると、最新の WSL 更新がより速く提供されます。
詳細については、https://aka.ms/wslstoreinfo
をご覧ください。
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

みなさんのユーザー名@DESKTOP-U8PTRLN:~$

と表示されます。これでUbuntuのインストールが終わりました。

Ubuntu環境を最新のものへアップデートする

続いて今インストールしたUbutuについてその環境を最新の状態へアップデートしておきましょう。

Ubuntuの起動画面の上で、

ユーザー名@DESKTOP-U8PTRLN:~$ 

という状態になっていると思うので、その「$」マークの後に、次のコマンドを入力します。

sudo apt update && sudo apt upgrade

こんな感じです。

ユーザー名@DESKTOP-U8PTRLN:~$ sudo apt update && sudo apt upgrade

そうすると先程登録したパスワードの入力を求められますので、間違わずに入力しましょう。

[sudo] password for ユーザー名:

ここも何を入力しても、その文字などは表示されません。成功すると処理が開始されます。

途中で、

After this operation, 1024 B of additional disk space will be used.
Do you want to continue? [Y/n] 

というものが出てきます。「新しく1024バイトの容量が必要ですが大丈夫ですか?」という質問です。問題なければ「Y」を入力します。


Do you want to continue? [Y/n] Y

そして実行すると、また処理が続きます。全て終わると、

ユーザー名@DESKTOP-U8PTRLN:~$

というもとの表示が現れます。

Linuxディストリビューションが使っているWSLのバージョンを確認

さらに、Linuxディストリビューション(今回はUbuntu)が使っているWSLのバージョンを確認しておきましょう。これが最新WSL(2023年5月13日時点ではWSL2)になっていないと、いろいろ困ったことなります。

Ubuntuの起動画面を表示させたままで、WindowsのコマンドプロンプトまたはPowershellの画面の上で、

wsl --list --verbose

とします。これを実行すると私の場合は、

  NAME                   STATE           VERSION
* docker-desktop-data    Running         2
  Ubuntu                 Running         1
  docker-desktop         Running         2

となり、UbuntuはWSL2ではなく、古いバージョンを使っていることがわかりました。これではいろいろまずいので、WSL2を使う設定へ変更しましょう。

おなじくコマンドプロンプトまたはPowershell上にて、

 wsl --set-version <distro name> 2

というコマンドを使います。今回は、

 wsl --set-version Ubuntu 2

となります。実行すると、

C:\Users\○○○○>wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

となります。

同時にUbuntuの起動画面上で、

ユーザー名@DESKTOP-U8PTRLN:~$ Linux 用 Windows サブシステム インスタンスが強制終了されました。
Press any key to continue...

と表示されます。ここで、なんでもいいのでキーボードのキーを1つ押します。「A」のキーでも押しておけばOKです。すると、コマンドプロンプトまたはPowershell上で処理が進み、

変換が完了しました。

C:\Users\○○○○>

という表示になります。本当にWSLのバージョンが変わっているのか確認しておきましょう。コマンドプロンプトまたはPowershell上で、

wsl --list --verbose

を実行すると、

* docker-desktop-data    Running         2
  Ubuntu                 Stopped         2
  docker-desktop         Running         2

となり、Ubuntuのところが「1」から「2」へ変わっています。

これでWindowsのWSL2を利用したUbuntuのインストールが完了です。

インストールしたUbuntuの場所は?

なお今回インストールしたUbuntuですが、私の場合は次の場所の、

C:\Users\○○○○\AppData\Local\Docker\wsl\distro
ext4.vhdx

というファイル名で存在しています。

これは私がUbuntuのインストールよりも前に、Docker Desktop for Windowsを先にインストールしたからかもしれません。

Windows上のUbuntuの起動方法

以上のように無事にインストールできたUbuntuですが、どうやって使うのかというと、実は普通のWindowsアプリと同じ方法です。

Windowsキーを押してスタートメニューを出してください。

このようにスタートメニューで普通に出てきますし、スタートメニューの検索欄で「Ubuntu」と検索しても出てきます。普通のアプリと同じです。クリックすると実際に起動します。

Ubuntuのバージョン確認

インストールしたUbuntuのバージョンを確認しておきましょう。まずは上の方法でUbuntuを起動させます。バージョン確認にはいくつかのコマンドがあるようですが、今回は、

lsb_release -a

このコマンドを使いましょう。

ユーザー名@DESKTOP-U8PTRLN:~$ lsb_release -a

上のように入力して、

Ubuntuのバージョンの確認方法
ユーザー名@DESKTOP-U8PTRLN:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.2 LTS
Release:        22.04
Codename:       jammy

今回は22.04.2 LTSだとわかりました。

DockerとUbuntuを連携させる

最後にインストールしたUbuntuをDockerと連携・統合させましょう。

まずWindows+WSL2に何もLinuxディストリビューションをインストールしていない段階では設定→Resources→WSL integrationの状態は、下画像のようになっています。

how to integrate Docker with Linux distribution on WSL2

しかし、これまでの作業でUbuntuをインストールすると次のように変化します。

how to integrate Docker with Linux distribution on WSL2

Ubuntuを選ばるようになっています。ここで、Ubuntuを選択してオンにして、

how to integrate Docker with Linux distribution on WSL2

最後に、「Apply&restart」を押して処理が終わるのを待つだけです。

これでDockerのために、Windows+WSL2環境にUbuntuをインストールして、Dockerと連携・統合することができました。お疲れ様でした。

なおVS Code+Docker+Gitを使ってPythonのDjango開発環境を作る方法について、その基本は次の記事で解説しています。Macでの作業ですがWindowsでの作業でもほとんどが共通の作業となるので参考にしてみてください。

これから先のDockerの具体的な使い方などは世界最大の動画学習サイトUdemyでの動画による学習がわかりやすくおすすめです。

愛を分かち合いましょう