目次

17 WSL2 + Docker

WSLとは、平たく言うとWindows内でLinuxを実行できる仕組み

WSL有効化

PowerShellを管理者権限で実行し下記を実行後、PC再起動

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Install WSL 2 kernel

Download the Linux kernel update package

CentOS8ダウンロード

https://github.com/wsldl-pg/CentWSL/releases

インポート

md %userprofile%\AppData\Local\Packages\CentOS8
wsl --import CentOS8 "%userprofile%\AppData\Local\Packages\CentOS8" "C:\Users\s-matsui\Downloads\CentOS8\rootfs.tar" --version 2

確認

C:\Users\s-matsui>wsl -l -v
  NAME       STATE           VERSION
* CentOS8    Stopped         2

指定したディストリビューションを実行

C:\Users\s-matsui>wsl -e CentOS8
[root@ThinkPad-X1-Nano s-matsui]#

デフォルトのディストリビューションへ入るにはwslだけでOK

C:\Users\s-matsui>wsl
[root@ThinkPad-X1-Nano s-matsui]#

Docker Desktop for Windows

Docker Desktop for Windowsをインストール

https://hub.docker.com/editions/community/docker-ce-desktop-windows

コンテナ作成

下記でさっそくコンテナが作成され、http://localhostでアクセスできるようになる。

docker run -d -p 80:80 docker/getting-started

Docker Desktopのボリューム確認方法

①Dcoker Hostに接続し確認

Docker Hostからは、/var/lib/docker/volumesで見える

>> docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -i sh
>> ls /var/lib/docker/volumes/

②wslホストへ接続し確認

ネットワークからwslホストへ接続し確認

WSLホストからは、「\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\」で見える。

C:\Users\s-matsui>dir \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
 ドライブ \\wsl$\docker-desktop-data のボリューム ラベルがありません。
 ボリューム シリアル番号は 0000-0000 です

 \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes のディレクトリ

2021/03/15  17:32    <DIR>          hello
2021/03/15  12:42                 0 backingFsBlockDev
2021/03/15  09:16    <DIR>          da2abe59d6d0b92ff2b005301d0118f79aae0bf4619c05012e8171a69e8ab337
2021/03/15  17:32    <DIR>          ..
2021/03/15  17:32            32,768 metadata.db
2021/03/15  17:32    <DIR>          .
2021/03/15  13:21    <DIR>          laravel-test_mysql-data
               2 個のファイル              32,768 バイト
               5 個のディレクトリ  251,857,551,360 バイトの空き領域

WSL2 vmmem問題

vmmmemが大量のメモリを食ってしまっている問題。

設定ファイルを用意

%USERPROFILE%.wslconfig

[wsl2]
memory=6G
swap=0

WSLの再起動

C:\Users\s-matsui>wsl --shutdown

最小値

私の環境では「Ubuntu 20.04.3 LTS」を利用しているが、memory=1Gだけでは起動しませんでした。

下記のようにswap=1GBも入れると起動できました。

OS内のメモリ使用量にもよりますが、私の環境では1Gとちょっと必要そうです。

%USERPROFILE%.wslconfig

[wsl2]
memory=1G
swap=1G