32
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

かんたんにDocker超高速化@Windows!開発前にやるべきたった1つの工夫

Posted at

WindowsでDockerを使って開発してる現場を見てると、大体みんな困ってます。

  • Docker使ってWordPress動かすと、すごーーーく遅い。
  • Docker使ってLaravelアプリを開発してるけど、Viteが遅すぎ。
  • Linux使えって言われても、会社のPCがWindowsだもん!Excelもいるし。

今回はこんなお悩みを簡単に解決していきます。(Windows11環境にて)

TL;DR

Windows上のUbuntuからDocker使え。

  • WindowsにWSL入れる。(コマンド1個)
  • WindowsにUbuntu入れる。(ストアでポチる)
  • Ubuntu用フォルダにプロジェクト配置。(普通にエクスプローラで)
  • Visual Studio Codeでプロジェクトを開いて、Dockerスタート!

仕組み(何をしようとしているか)

WindowsでDocker使って仮想Linuxサーバー立ててWordPressを動かしてるとき、WSL (Windows Subsystem for Linux)という仮想マシンの仕組みを使ってます。

今使われているWSL2は基本めちゃめちゃ優秀で高速動作するなのです。でも弱点があって遅いので、弱点を回避することにします。

WSL2の弱点

WSL2では、ホストとなるWindowsのファイルシステム(NTFS)と仮想マシンのLinuxのファイルシステム(ext4)でのデータ交換だけ異常な負荷がかかる欠点があります。

図で表すとこんな感じ。(厳密には正確じゃない図だけど)

image.png

改善後のイメージ

なので、WSL2の中にUbuntuを入れて、そこからDocker使おうって寸法です。

図で表すとこんな感じ。

image.png

必要なもののインストール

Docker Desktop

まだDocker Desktopを入れてない場合は、DockerのサイトからDocker Desktopをダウンロードして入れる。(Intel CPUはAMD64。AMD CPUはAMD64。ARMの場合だけARM64)

image.png

このときWSL2を使うようにすべし。

image.png

インストール後再起動して進むとWSLを更新インストールさせようとしてくるので、適当にキーを押して進める。

image.png

あとは指示に従って進める。

もし「WSLが古すぎる」というエラーが出たら、以下のWSL2のインストールを見てWSLをアップデートする。

WSL2

PowerShellを開けてWSLが入ってるか確認。

wsl -v

まだWSLが入ってない場合は以下になるので、なにかキーを押してインストールを進める。

image.png

WSLが入ってたらバージョンが表示される。

image.png

WSLをアップデートする。

wsl --update

Ubuntu

WSL2上にUbuntuを入れるのは、Microsoft Storeで「入手」するだけ。Ubuntuはいくつか出てくるけど、「Ubuntu」とだけ表示帰されてるやつがおすすめ。

image.png

インストールされたら開く。

image.png

デフォルトユーザー設定になる。

image.png

これでPowerShellからUbuntuを操作できる。

image.png

開発するプロジェクトを置いて起動する

プロジェクト用フォルダをUbuntu内に作成

いつもはマイドキュメントの下などにプロジェクトを置く(Gitクローンしてくる)ところだけど、Ubuntuのユーザーフォルダ内にプロジェクトを置く。Linuxでは、/home/[ユーザー名]がユーザーフォルダ。

例)
今まで:C:\Users\[ユーザー名]\Documents\DockerProjects\[プロジェクトフォルダ]
今回:\\wsl.localhost\Ubuntu\home\[ユーザー名]\DockerProjects\[プロジェクトフォルダ]

エクスプローラーにLinuxが出てくるので、そこからたどるとわかりやすい。Ubuntuのバージョン版を選んだ場合はパスが少し異なる。

image.png

image.png

プロジェクトを配置する

今回はLaravel練習用リポジトリをクローンしてきましょう。

PowerShellでUbuntuに入って、

image.png

~/DockerProjects (= /home/[ユーザー名]/DockerProjects)に移動し、リポジトリをクローン。

git clone https://github.com/hitotch/laravel11-sample-ja.git

image.png

Visual Studio Codeでプロジェクトを開く

いつもどおりファオルダを開くで、

image.png

\\wsl.localhostを開いて、

image.png

設置したプロジェクトフォルダを選択。

image.png

ターミナルを開いて、さらにUbuntuのターミナルを開く。

image.png

UbuntuからDockerコンテナを起動する。

Dockerコンテナを起動する。

もしDockerのWSLインテグレーションをオンにせよとエラーが出たら、Dockerで設定をオンにする。

image.png

image.png

これで高速動作!

image.png

ところで

今回のスクリーンショットはすべてLinux Mint上のKVMで走ってるWindows11のものです。

つまり、以下のような二重の仮想化になってます。それでも軽快に動作します。

  Ubuntu & Docker内Linux 
  -仮想化- 
  Windows11
  -仮想化- 
 Linux Mint

参考サイト

Windows の Docker 環境を高速化する方法

32
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?