Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
いわゆるモダンな開発環境の1つとして人気のコンテナアプリの1つDockerですが、WindowsではDocker Desktop for WindowsというGUIで操作できるアプリ(ソフト)が用意されていますので、それを使うのが一般的かと思います。
WindowsでそのDockerを使う場合に、LinuxディストリビューションをWindows+WSL2の環境にインストールしておいたほうがいいことが多いです。
今回の記事ではWindows上のDockerのために、
などを詳しく解説します。
Contents
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を以下の手順でインストールしていきます。
マイクロソフト公式ページ:WSL を使用して Windows に Linux をインストールする
マイクロソフト公式:WSL を使用して Windows に Linux をインストールする
まず前提として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をインストールしていきます。
Linuxディストリビューションのインストール用のコマンドは、
wsl --install -d <DistroName>
という形式となります。今回は、
と置き換え、
wsl --install -d Ubuntu
とします。
C:\Users\○○○○>wsl --install -d Ubuntu
こんな感じです。実行するとインストールが始まり、
インストール中: Ubuntu
[==========================51.0%
こんな表示が出てきます。しばらくすると、
C:\Users\○○○○>wsl --install -d Ubuntu
インストール中: Ubuntu
Ubuntu はインストールされました。
Ubuntu を起動しています...
このように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のインストールが終わりました。
続いて今インストールした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ディストリビューション(今回は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ですが、私の場合は次の場所の、
C:\Users\○○○○\AppData\Local\Docker\wsl\distro
ext4.vhdx
というファイル名で存在しています。
これは私がUbuntuのインストールよりも前に、Docker Desktop for Windowsを先にインストールしたからかもしれません。
以上のように無事にインストールできたUbuntuですが、どうやって使うのかというと、実は普通のWindowsアプリと同じ方法です。
Windowsキーを押してスタートメニューを出してください。
このようにスタートメニューで普通に出てきますし、スタートメニューの検索欄で「Ubuntu」と検索しても出てきます。普通のアプリと同じです。クリックすると実際に起動します。
インストールしたUbuntuのバージョンを確認しておきましょう。まずは上の方法でUbuntuを起動させます。バージョン確認にはいくつかのコマンドがあるようですが、今回は、
lsb_release -a
このコマンドを使いましょう。
ユーザー名@DESKTOP-U8PTRLN:~$ lsb_release -a
上のように入力して、
ユーザー名@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だとわかりました。
最後にインストールしたUbuntuをDockerと連携・統合させましょう。
まずWindows+WSL2に何もLinuxディストリビューションをインストールしていない段階では設定→Resources→WSL integrationの状態は、下画像のようになっています。
しかし、これまでの作業でUbuntuをインストールすると次のように変化します。
Ubuntuを選ばるようになっています。ここで、Ubuntuを選択してオンにして、
最後に、「Apply&restart」を押して処理が終わるのを待つだけです。
これでDockerのために、Windows+WSL2環境にUbuntuをインストールして、Dockerと連携・統合することができました。お疲れ様でした。
なおVS Code+Docker+Gitを使ってPythonのDjango開発環境を作る方法について、その基本は次の記事で解説しています。Macでの作業ですがWindowsでの作業でもほとんどが共通の作業となるので参考にしてみてください。
これから先のDockerの具体的な使い方などは世界最大の動画学習サイトUdemyでの動画による学習がわかりやすくおすすめです。
世界最大の動画学習サイトUdemyのおすすめDocker講座【PR】