2020-08-31に投稿

WSL 2 と Desktop Docker の開発環境を整えてみた

本来自分はゲーム作りたい系の人なのですが、人生の大河の流れに身を委ねていたらWeb開発に貢献する必要が出たので、某Webシステムの開発に貢献するために、開発環境を整えたいと思います。本記事は、そのための開発環境を整える記録ただの日記です。

Web開発自体は、けっこうしばらくぶりなので(仕事でやっていたのが5年くらい前)、色々わかってないので調べながらになります。

最終的な目標となる環境は Node.js、Express、MongoDB の環境を整えることですが、今回は、とりあえず Docker が使える状態になるところまでやってみます。

自宅メインPCを最近新調していて、開発まわりの環境はほぼ整えていない状態で、ほぼ最初からやっていく感じです。メインPCの OS は Windows 10 Home です。

Windows Subsystem for Linux 2 (WSL 2) を利用するために Windows 10 をバージョンアップ

巷ちまたでは、Web開発する際はローカルの仮想環境上で環境を整えて、その上でWebバックエンドのシステムを動かして動作確認して開発するのが主流のスタイルだと思うので、それに倣ならいたいと思います。

で、Webバックエンド開発をする際、CUI(コマンドラインインターフェース)をよく使いますが、世に多くある技術情報は、Linux 環境が前提であるものが大多数です。Windows のコマンドプロンプトや PowerShell での開発情報は少ないので、できれば Linux 環境で開発したいです。

Windows 10 で使える(いつのバージョンからかは分からないけど)Windows Subsystem for Linux (略して WSL)という機能を用いれば、Windows 環境上に Linux 環境を作ることができるので、これを使います。
で、WSL にはバージョン1とバージョン2があり、どうやらバージョン2から、仮想環境を作る上での利点があるようなので、WSL 2 にしてみたいと思います。

「windows10 wsl2 インストール」でGoogle検索したら、Microsoft の公式の解説ページがあったので、これを見ながら試してみます。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

解説ページにある「WSL 2 に更新する」の項目で、以下のような記述がありました。

WSL 2 に更新するには、次の条件を満たす必要があります。

  • バージョン 2004、ビルド 19041 以上に更新された Windows 10 を実行している。
  • Windows のバージョンを確認するには Windows ロゴ キー + R キーを押します。次に「winver」と入力し、 [OK] を選択します (または、Windows コマンド プロンプトで ver コマンドを入力します)。 お使いのビルドが 19041 より前の場合は、最新の Windows バージョンに更新してください。 Windows 更新アシスタントを入手する。

メインPCにインストールされている Windows のバージョンを確認してみたところ、バージョン2004未満だったので、更新しようと思い、「最新の Windows バージョンに更新してください」という文からリンクされている Windows の設定([設定]→[更新とセキュリティ]→[Windows Update])から、更新をしてみたけど、バージョン2004まで上がりませんでした。

調べてみると、「Download Windows 10」という Microsoft 公式ページから更新用プログラムをダウンロードしてインストールする必要があるようでした。

Windows10 バージョン2004 ビルド19041に上げてみた - Qiita

このページを参考にして、Windows 10 のバージョンを上げてみたところ、うまくバージョンアップできました。

image.png

WSL 2の環境を整える

引き続き、Microsoft の公式ドキュメントに従ってWSL2の環境を整えます。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

ドキュメントの「WSL 2 を既定のバージョンとして設定する」の項目にある、wsl --set-default-version 2コマンドを PowerShell で実行しようとしたところ、以下のようなエラーが発生しました。

> wsl --set-default-version 2
エラー: 0x1bc
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

「wsl "set-default-version" "0x1bc"」でGoogle検索してみたら、それっぽいページが見つかりました。

Error 0x1bc when setting wsl default version · Issue #5651 · microsoft/WSL

Github の Microsoft 公式のWSLのリポジトリの issue です。(英語の読解スキルがまだまだ貧弱なので)Google翻訳して読んでいくと、カーネルエラーがどうのこうのって書いてありました。

公式ドキュメントにも、以下のような注意書きがありました。

このメッセージは、コマンド WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel を実行した後に表示されることがあります。 リンク (https://aka.ms/wsl2kernel) に従って、WSL 2 で使用する Linux カーネルをコンピューターにインストールするためのドキュメントのこのページから MSI をインストールしてください。 カーネルをインストールしたら、コマンドを再度実行すると、メッセージが表示されることなく正常に完了します。

ここで説明されているメッセージが出たわけではないのですが、カーネルがどうのって書いてあって関係しそうなので、ここにあるリンクに従って何かをインストールしてみます。

リンク先はここでした。

WSL 2 Linux カーネルの更新 | Microsoft Docs

カーネル更新のインストールのようです。ここにある「x64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードしてインストールしてみます。(使用しているメインPCは 64ビット環境です)

「wsl_update_x64.msi」というファイルがダウンロードされたので、インストーラーを実行します。

インストールはすぐに終わりました。

インストールが終わってすぐに、もう1回、PowerShell でwsl --set-default-version 2を実行してみます。

> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

エラーが表示されなくなりました。ふう……😓💦

Ubuntu をインストール

Microsoft 公式ドキュメントの流れに従い、Microsoft Store から Linux ディストリビューションをインストールします。開発に貢献する某システムの環境は Ubuntu で動作しているので、それに合わせて Ubuntu をインストールします。

2020080701.png

Windows のアプリ一覧から Ubuntu を起動させ、初期セットアップを行います。

image.png

新しい Linxu ディストリビューションのユーザーアカウントの作成とパスワードの設定を行いました。

PoewrShell からwsl --list --verboseを実行して、Linux ディストリビューションに割り当てられている WSL のバージョンを確認します。

> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

WSL 2で動いています。

Windows Terminal にも、Ubuntu が認識されました。

image.png

Docker のインストール

5年くらい前に私が仕事でWeb開発をやっていたときに使用していた仮想環境のためのツールが Vagrant だった記憶があります。しかし、昨今の流行は Docker というツールのようなので、それを使ってみたいと思います。(流行情報の追跡だけはちまちましている)

「wsl2 docker」でGoogle検索して、以下のQiitaの記事が出てきたので、これを参考にして作業してみたいと思います。

Windows 10 Home で WSL 2 + Docker を使う - Qiita

タスクマネージャーから確認※できる CPU の Virtualization が Enable になっていないといけない、ということなんですが、今の自分の環境で確認してみたら「仮想化」という様に日本語になっていました。そして、この項目は「有効」となっていたので問題なさそうです。

image.png

※タスクマネージャーの起動は Ctrl + Shift + Esc というショートカットキーを使うと便利です

参考記事には WSL 2 の設定についても書かれていますが、これはもう完了しているので、Docker のインストールからの部分を参考にします。

今や Docker は GUI で操作できるようなので、Docker Desktop for Windows を導入します。2020年8月7日時点での Stable 版(安定版)のインストーラーをダウンロードしてインストールします。インストーラーのウィンドウのタイトルバーに「Installing Desktop Docker 2.3.0.4 (46911)」と書いてあり、ここで初めてバージョンを確認できました。

インストーラーの Configuration で Enable WSL 2 Windows Features にチェックがついているのを確認して [OK] ボタンを押すと、インストールが開始されました。インストールが完了すると「Installation succeeded」と表示され、「Close and log out」ボタンを押すと、Windows から強制的にログアウトしました。

Windows の再ログインすると、Docker の GUI が起動しました。

image.png

チュートリアルをしてくれるみたいなんですが、一旦スキップします。

Desktop Docker の設定(ギアのアイコン)の General で「Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend)」にチェックが入っているのを確認します。確認すると、すでにチェックが入っていましたが、項目全体が薄灰色になっていて、チェックが外せないようでした。英語のカッコ書きで「Windows Home は WSL 2 バックエンドだけで動作する」って書いてあるので、WSL 2 が前提になっている状態なのでしょう。

設定の Resouces の WSL INTEGRATION の「Enable integration with my default WSL distro」にチェックが入っているのを確認します。確認したら、問題なくチェックが入っていました。

この WSL 2 での Docker を使えば、Hyper-V を使わなくても仮想環境が作れる、というのが利点のようなんですが、Hyper-V というのが BIOS 的な何か、というくらいの理解しかしていません。

これで、とりあえず WSL2 と Docker が使えるようになりました。

ツイッターでシェア
みんなに共有、忘れないようにメモ

mozukichi

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント