Contents
概要
Windows 10 HomeにWSL2を入れてDockerをインストールして、簡単にhttpdのコンテナを起動して動作確認します。
バージョンを1909で開始しましたが、1909だとWSL2を入れられなかったので途中で2004に上げました。
主な参考URL
やっぱり参考にするのは公式でしょ?
Windows 10 用 Windows Subsystem for Linux のインストール ガイド
公式のコマンドで怒られた時に参考にしました。
WSL2の環境構築手順 – Qiita
Docker Desktopのインストール
Docker Desktop WSL 2 backend | Docker Documentation
評価環境
途中でバージョンを2004に上げてますが、開始時点では以下になります。
バージョンアップの手順も記載しています。
エディション Windows 10 Home
バージョン 1909 → 2004
早速WSL2を有効化していきます。
機能の有効化
WSL 2 をインストールする前に、”仮想マシン プラットフォーム” オプション機能を有効にする必要があるらしい。公式サイトにはPowerShellで以下のコマンドで有効化して再起動するとある。
再起動しろっていう割に/norestartオプションついてるの?どういうオプションなんだろう。このオプション外すと自動的に再起動してくれるんかな?調べろって話か。
一応 Windows の機能の有効化または無効化 でどこが有効化されるか確認しておく。
win + R で OptionalFeatures一番下に「仮想マシン プラットフォーム」とあった。おそらくこれだろう。
ではPowerShellを管理者権限で実行して以下のコマンドを実行する。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
実行前に「dism.exeってなに?」と思った人は以下のページをご覧ください。
DISM の概要
展開イメージのサービスと管理 (DISM.exe) は、Windows イメージを提供および準備するために使用できるコマンドライン ツールです。
https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/what-is-dism
お、 Windows の機能の有効化または無効化 でチェック入った。
OS再起動します。
再起動後、Windows の機能の有効化または無効化 は変化なし。
WSL 2 を既定のバージョンとして設定する
以下の公式のコマンドをそのまま実行するとコマンド ライン オプションが無効です: --set-default-version
と怒られた。
wsl --set-default-version 2
ここで手動で2004に上げる決意をする。
バージョンアップの手順は一番下の[手動で2004にバージョンアップ]をご参照ください。
私はアップデートに約40分かかりましたが、バージョンアップが完了しました。
win + R で winver でバージョンを確認してください。
Windows の機能の有効化または無効化 を念のため確認したところ、先の手順で有効化した「仮想マシン プラットフォーム」にはチェックが入ったままでした。
でも今まで表示されてなかった項目や名前が変わったっぽい項目もありますね。Windows Subsystem for Linux から名称が変わったであろう Linux 用 Windows サブシステム とか、簡易 TCP/IP サービス (echo、daytime など) などができていました。
さてここから元の手順の続きを行います。
まずはversion情報が出るか確認。
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
よし。ではWSL2を既定のバージョンに設定。
> wsl --set-default-version 2
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
はいはい。表示されたURLにアクセスして詳細を確認します。
手順は以下のようなのでこれ通りにやります。
- 更新プログラム パッケージをダウンロード
- ダウンロードしたパッケージを実行
- 管理者特権のアクセス許可に「はい」
ダウンロードしたmsiファイルを実行したら以下のウィザードが表示された。
ちょっと切れてますが、Nextを押下して、ダイアログではいを押下して、Finishで終わりです。これはすぐ終わりました。
念のためPowerShellを立ち上げなおして再度WSL2を既定のバージョンに。
> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
これでできたらしい。
既にインストール済みのディストリビューションをWSL2に設定する
--set-version
オプションを指定して1から2に設定します。設定するには名前が必要なので以下のコマンドで取得します。
wsl --list --verbose
# もしくは
wsl -l -v
# 実行結果
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
Ubuntu18.04しか入れてなかったので、これだけでしたが、Ubuntu-18.04
を使ってバージョンを変更します。
> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
以下のように書かれているのでいつでもwsl1に戻せるようです。
<versionNumber> は、数字の “1” または “2” に置き換えてください。 上記と同じコマンドで “2” を “1” に置き換えて実行することにより、いつでも WSL 1 に戻すことができます。
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
変換が完了しました。
と表示されて終了。
私の環境では2,3分でした。versionが2になっていることを確認します。
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 2
せっかくなのでDockerを入れてみる
Docker Desktopをインストールすればいいらしい。
Docker Desktop WSL 2 backend | Docker Documentation
Stableが2.3.0.2(2020/06/14時点)らしいので、それを利用する。
こちらからDocker Hub
ページ上部の「Get Docker」リンクか、少し下にある「Get Docker Desktop for Windows (stable)」のどちらでもOKです。リンク先は同じでした。
exeファイルをダウンロードして、それを実行します。
画面右下のOKボタンが消えてますが…
インストールが終わったらこんな感じ。ボタン押したらいきなりサインアウトしだすからびっくりした。書いてるんだけどね。
サインインすると画面右下にこんなポップアップが表示されてDocker Desktopが起動します。
「Start」ボタンを押下すると、チュートリアルが始まります。私はやってません。なぜならPowerShellでgitコマンドを使えるようにしていなくて怒られたから。
上記のチュートリアルが終わったら(skipしたら)「まだコンテナないよ!このコマンド実行してみて!」って以下のコマンドが用意されていた。かわいいやつめ。
特に意味はないけどPowerShellでやるつもりはあんまりなかったので、インストールしてたWSLを起動して実行した。
# コンテナ起動。これはDocker Desktopの画面に記載されていたコマンド。
$ docker run -dp 80:80 docker/getting-started
# 起動確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9f7ae06a4d4 docker/getting-started "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp xenodochial_heisenberg
nginxが立ち上がってるのか。ブラウザでhttp://localhost
へアクセスしてみるとGetting Started画面が表示された。成功してるっぽい。やったぜ!
Docker Desktopの起動と終了
ツールバーかタスクトレイにクジラがいますので、それをクリックするとQuit Docker desktop があります。クリックするとクジラが消えます。起動する場合は、デスクトップに追加された「Docker Desktop」のアイコンをダブルクリックすれば起動されます。
気になったこと
以下のコマンドでファイアウォールで受信の許可をしていないポート番号を指定して、同じネットワーク内の別の端末からcurlをしたところ、レスポンス返ってきた。
docker run -d --rm -p 55554:80 httpd
# 別端末から
$ curl http://<自端末(ホストOSのWindows)IP>:55554
<html><body><h1>It works!</h1></body></html>
docker inspect
でコンテナに割り振られたIPを叩いてもレスポンスはないし…外で使うのは怖いな…。
別件だけど、既に入ってたputtyjpが動かない…。きっとバージョンアップの影響だな…困ったな…また調べるか…。
まとめ
Windows Updateには時間がかかりますが、その他はそんなに時間かからないですし良い感じですね!他の動作確認としてとりあえずhttpdのimageをpullしてrunしたら起動しました。良い感じですね~。
Docker Desktopの設定を見るとEnable Kubernates
っていうチェックボックスがあるからK8S使うのも簡単なのかな。
これでWindows10 HomeでもDockerが普通に使えるようになりました。開発が捗るぞー
手動で2004にバージョンアップ
こちらを参考にさせていただいて、
Windows 10 2004 May 2020 Update のダウンロードと手動アップデート | パソブル
こちらから「今すぐアップデート」ボタンを押下して、exeをダウンロードしました。
Windows 10 のダウンロード
ダウンロードしたexeを実行するとダイアログが立ち上がります。そのまま画面に従ってください。
今すぐ更新ボタンを押下。
その後CPUのチェックなどが入り、インストールが始まりました。
私はVMware PlayerがWindows 10 と互換性がないため、今すぐアンインストールしてください。
と言われ、画面にアンインストールボタンが用意されていたのそのままクリックしてアンインストールしました。
すぐ再起動するかときかれて、再起動。
再起動後、自動的に2004のアップデートが始まらなかったので、ダウンロードしたexeを改めて実行しました。
結構時間かかります。Youtubeでも観ながらお待ちください。私の場合は約40分かかりました。
この手順が終了したら、WSL 2 を既定のバージョンとして設定する から開始してください。