とりあえず、雑にやったこと残します
- Windowsの更新
- MicrosoftStoreからUbuntuのインストール
- WLS2へのアップグレード
- Docker for Windowsのインストール
Windowsのバージョンチェック
[Win + R]でファイル名を指定して実行、winverと入力
この段階で、バージョンが19018以下だとDocker for Windowsはインストールできません。
Windowsの更新
というわけでWindowsそのものをアップデートします。
Windows 10 May 2020 Update
**[Update now]**ボタンから更新プログラムをダウンロードします。
Windows10Upgrade9252.exeファイルがダウンロードされるので、クリックして起動します。
途中の経過をキャプチャ取り忘れましたが、スタートして30分くらいで完了し、再起動を求められます。
再起動後にバージョンを確認すると、19041になりました
WSLの有効化
- コントロールパネル > プログラムと機能 > Windowsの機能ダイアログを開く。
- Windowsの機能の有効化または無効化をクリックしてダイアログを開く
- Linux用Windowsサブシステムにチェックを入れる。
MicrosoftStoreからUbuntuのインストール
もともとWindows使うの久しぶりでWSLもまともに使ってなかったので、wslを起動しようとしても以下のようになります。
なので、MicrosoftStoreからLinux(Ubuntu)をインストールします。
Ubuntu20.04.LTSを選びます。
ここは別に好きなLinuxにしてもらっても大丈夫です。
起動するとターミナルが開くので、username、passwordを設定します。
WLS2へのアップグレード
Windowsの機能確認と更新
以下のコマンドでWindowsの機能確認ができます
dism.exe /online /get-features
コマンド実行時に以下の2つが有効になっているかを確認します
機能名 : Microsoft-Windows-Subsystem-Linux
状態 : 有効
機能名 : VirtualMachinePlatform
状態 : 有効
なっていない場合は以下のコマンドで有効にしてください
- Microsoft-Windows-Subsystem-Linux
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- VirtualMachinePlatform
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Linuxカーネルの更新
インストール済みのLinuxディストリビューションを確認します。
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 1
今はVersion1になっているのでコマンドでVersion2に上げるのですが、このままやると
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です
と言われてしまうので、Linuxのカネールを更新します。
以下のページにアクセスして、パッケージのダウンロードをします。
WSL 2 Linux カーネルの更新
wsl_update_x64ファイルがダウンロードされるので、クリックして起動します。
[Next]を押します
[Finishi]を押して完了です。
LinuxディストリビューションをWSL2に設定
以下のコマンドでUbuntuをWSL2にアップデートします
wsl --set-version Ubuntu-20.04 2
ディストリビューションを確認します。
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
変更されました。
WSL2をデフォルトに設定
WSLからデフォルトバージョンをWSL2に変更します
wsl --set-default-version 2
Docker for Windowsのインストール
もともとはコレがやりたかった。
随分遠回りしたけど、インストールやってきます。
Docker Desktop Installerファイルがダウンロードされるので、クリックして起動します。
**[OK]**で先に進みます
インストールが進みます
完了です、**[Close and log out]**でログアウトします
このとき再起動がかかります
再起動後にDocker for windowsの設定画面でましたが、正直使うのはDockerのコマンドだけなので飛ばしました。
一応起動中は以下の場所に常駐していて、Dashboardから画面は開けます。
まとめ
ともかく長かった。
WindowsのDockerがめんどくさいとは聞いていたが、ここまでとは・・・
ただ、WSL2になってDockerの実行環境がUbuntuになったのはましになったと思う。
というわけで、本当にやりたかったことはこれからやります。
2020/07/28 追記
思ったより見てくださった方が多くて驚いてます。
雑な内容なのにありがとうございます
使ってる間にちょっと気になったことを追記しておきます。
WSL2の再起動
再起動するタイミング結構あります。
例えば、立ち上げたUbuntuの時間が結構ズレたりします。
こちらは既にIssueに上がっているのでそのうち治るでしょう。
この時間のズレについてはいろんな直し方が探すとありますが、手っ取り早いのは再起動なので再起動コマンドがこちら。
wsl.exe --shutdown
管理者権限のPowrshellで実行してください。
メモリを食いつぶす問題
タスクマネージャーを見るとわかりますが、Vmmemというタスクがメモリをガンガン食いつぶします。
この問題もIssueが立ってます。
そのうち修正は入ると思いますが、Issueでは今の回避方法の提案がされています。
- 再起動
- WSLメモリの上限設定
- コマンドでのメモリ解放
とりあえず1は割愛、確実性は高め
他の2つはおまじない程度に試して見る程度で使ってください。
2. WSLメモリの上限設定
Windowsのユーザーディレクトリ(C:\Users<yourUserName>)に.wslconfig
というファイルを作ります。
その中で以下のような設定を書いたあとに再起動します。
[wsl2]
memory=2GB
swap=16GB
localhostForwarding=true
hisayuki@DESKTOP:~/develop/annowork_devlop$ free -h
total used free shared buff/cache available
Mem: 1.9Gi 1.7Gi 63Mi 0.0Ki 169Mi 92Mi
Swap: 16Gi 326Mi 15Gi
Issue見てると結構効果がまばらなのですが、こちらもしっかり効果でてます。
今回は2Gで抑えられてるのと、タスクマネージャー側も2G以上には今の所なっていません。
3. コマンドでのメモリ解放
以下のコマンドで不必要なキャッシュを消してメモリの開放をします。
echo "sync && echo 3 > /proc/sys/vm/drop_caches" | sudo sh
こちらも感覚なので確定要素はありません。
加えてUbuntu上でDocker for windows動かしたり、実際にContainer動かしてるとやっぱり増えてます。