WSL1 でも docker を使うことはできましたが、管理者権限が必要です。
個人 PC ならそれでも全然問題ないのですが、会社の閉ざされた空間では、管理者権限なしにいろいろできる、というところが非常に重要なのです。
WSL2 では管理者権限不要で docker が使えるようになっているハズなので、遅まきながら試してみます。
前提
以下の状態で動作確認しています。
- Windows10 Pro バージョン 2004
- WSL1 をインストールしている
- Ubuntu 20.04 インストール済み
WSL2 のインストール
ぶっちゃけ公式サイトを見たほうが早いです。
この手の解説ページは、公式サイトはわかりにくいというのが定説ですが、めずらしく(?)わかりやすいです。
とはいえそれで終わりだと書くことがなくなってしまうので、自分なりにまとめてみます。
WSL を有効化する
管理者権限で Windows PowerShell を開き、以下を実行することで有効化できます。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
今回はすでに対応済みなのでやってません。
「Windows の機能」でも設定・内容の確認を行えます。
「Linux 用 Windows サブシステム」にチェックを入れれば OK です。
仮想マシンプラットフォームを有効化する
UEFI 画面で、VT-X(インテル CPU の場合)もしくは SVM(AMD CPU の場合)を有効化します。
設定方法についてはお使いのマザーボードによって異なるので、マニュアルなどを参照してください。
今使っているマザーボードは ASUS TUF B450M-PRO GAMING ですが、Advanced Mode の Advanced → CPU Configuration の中にありました。
BIOS は少し古いバージョンを使っています。そのあたりの事情については以下もどうぞ。
その後再び Windows を起動したら、WSL と同じように管理者権限で Windows PowerShell を開き、以下を実行します。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
こちらも同じように、「Windows の機能」からでも設定できます。
「仮想マシン プラットフォーム」にチェックが入っていることを確認します。
Linux カーネル更新プログラムのインストール
https://aka.ms/wsl2kernel で Linux カーネル更新プログラムをダウンロードし、インストールします。
2クリックで完了。あっという間に終わります。
WSL2 の有効化
wsl --set-default-version 2
コマンドで、WSL2 を有効化します。
PS C:\Users\kz> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
これだけです。めっちゃアッサリです。
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
と表示された場合は、1つ前の手順である、「Linux カーネル更新プログラム」がインストールされていない状態ですので、まずはインストールしておきましょう。
Ubuntu のインストール
まだ Ubuntu をインストールしていないようなら、Microsoft Store でインストールします。
今回はすでに Ubuntu 20.04 の方を入れているので、この手順はスキップしています。
ちなみに、バージョンが記されていない「Ubuntu」は、その時点での最新バージョンの Ubuntu を指しているようです。2020年10月時点では Ubuntu 20.04 です。
既存の Ubuntu を WSL2 に変更する
WSL のデフォルトバージョンを2にしても、もともと WSL1 の時点でインストールしていた Ubuntu は WSL1 のままです。
C:\Windows\System32\wsl.exe
を、普段使用している管理者ではない通常のユーザー権限で起動します。(エクスプローラでダブルクリックしないとダメかも)。
PS C:\Users\kz> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 1
以下のコマンドで、WSL2 に変更します。
PS C:\Users\kz> wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
20~30秒程度で WSL2 への変換が完了しました。
改めて確認してみると、VERSION が2に変更されています。
PS C:\Users\kz> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
Docker をインストールする
さてここからが WSL2 の真骨頂、普通に Docker をインストールします。
そう、Docker Desktop for Windows とかを入れなくてもよいのです。スバラシイ。
まず、普通に Ubuntu を起動します。管理者権限で起動する必要はありません。
その後は、Docker 公式手順に従うだけです(Ubuntu の apt repository に入っているものは古いので、特に理由がない限りは公式手順にしたがった方がよいです)。
めんどうな方は以下をコピペでどうぞ。
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
インストールが終わったら、自分自身のユーザーで docker
コマンドが実行できるようにしておきます(この辺は好みで省略してもらっても OK)。
$ sudo gpasswd -a $USER docker
一応、いったん Ubuntu のウィンドウを閉じて再度開きなおしてから、docker を起動します。
$ sudo service docker restart
* Stopping Docker: docker [ OK ]
* Starting Docker: docker [ OK ]
おもむろに docker ps
コマンドを実行すると・・・
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
YES!すばらしい!
コメント