Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
96
Help us understand the problem. What is going on with this article?
@hisayuki

Docker for Windowsを入れるまでにやったこと

とりあえず、雑にやったこと残します

  • Windowsの更新
  • MicrosoftStoreからUbuntuのインストール
  • WLS2へのアップグレード
  • Docker for Windowsのインストール

Windowsのバージョンチェック

[Win + R]でファイル名を指定して実行winverと入力
image.png
この段階で、バージョンが19018以下だとDocker for Windowsはインストールできません。

Windowsの更新

というわけでWindowsそのものをアップデートします。
Windows 10 May 2020 Update

[Update now]ボタンから更新プログラムをダウンロードします。
image.png

Windows10Upgrade9252.exeファイルがダウンロードされるので、クリックして起動します。

途中の経過をキャプチャ取り忘れましたが、スタートして30分くらいで完了し、再起動を求められます。
image.png

再起動後にバージョンを確認すると、19041になりました

image.png

WSLの有効化

  • コントロールパネル > プログラムと機能 > Windowsの機能ダイアログを開く。
  • Windowsの機能の有効化または無効化をクリックしてダイアログを開く
  • Linux用Windowsサブシステムにチェックを入れる。

MicrosoftStoreからUbuntuのインストール

もともとWindows使うの久しぶりでWSLもまともに使ってなかったので、wslを起動しようとしても以下のようになります。
image.png

なので、MicrosoftStoreからLinux(Ubuntu)をインストールします。

MicrosoftStoreを起動します。
image.png

Ubuntu20.04.LTSを選びます。
ここは別に好きなLinuxにしてもらっても大丈夫です。
image.png

インストールをクリックします。
image.png

インストールが完了したら起動ボタンをクリックします。
image.png

起動するとターミナルが開くので、username、passwordを設定します。
image.png

ここまででUbuntuの設定は終わりです。
image.png

WLS2へのアップグレード

Windowsの機能確認と更新

PowerShellを管理者で起動します。
image.png

以下のコマンドで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 カーネルの更新
image.png

wsl_update_x64ファイルがダウンロードされるので、クリックして起動します。

image.png

[Next]を押します

image.png

[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 for Windows

Docker Desktop Installerファイルがダウンロードされるので、クリックして起動します。

image.png

[OK]で先に進みます

image.png

インストールが進みます

image.png

完了です、[Close and log out]でログアウトします
このとき再起動がかかります

再起動後にDocker for windowsの設定画面でましたが、正直使うのはDockerのコマンドだけなので飛ばしました。

一応起動中は以下の場所に常駐していて、Dashboardから画面は開けます。
image.png

まとめ

ともかく長かった。
WindowsのDockerがめんどくさいとは聞いていたが、ここまでとは・・・
ただ、WSL2になってDockerの実行環境がUbuntuになったのはましになったと思う。

というわけで、本当にやりたかったことはこれからやります。

2020/07/28 追記

思ったより見てくださった方が多くて驚いてます。
雑な内容なのにありがとうございます
使ってる間にちょっと気になったことを追記しておきます。

WSL2の再起動

再起動するタイミング結構あります。
例えば、立ち上げたUbuntuの時間が結構ズレたりします。
こちらは既にIssueに上がっているのでそのうち治るでしょう。

この時間のズレについてはいろんな直し方が探すとありますが、手っ取り早いのは再起動なので再起動コマンドがこちら。

wsl.exe --shutdown

管理者権限のPowrshellで実行してください。

メモリを食いつぶす問題

タスクマネージャーを見るとわかりますが、Vmmemというタスクがメモリをガンガン食いつぶします。
この問題もIssueが立ってます。

そのうち修正は入ると思いますが、Issueでは今の回避方法の提案がされています。

  1. 再起動
  2. WSLメモリの上限設定
  3. コマンドでのメモリ解放

とりあえず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動かしてるとやっぱり増えてます。

96
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hisayuki
IT系ノマドワーカーです。主にWeb系だけどRuby未経験、PHPはあんま好きじゃない。メインはJVM言語、そろそろ他のやりたいなって思えてきてる。 最近使ってる: aws/terraform/spring/kotlin/Angular/Typescript/DDD/github/CICD 興味ある: serverless/自動化/gcp

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
96
Help us understand the problem. What is going on with this article?