個人事業活動の開始時に、開発環境を整備しようと思い、中古のノートPCとミニデスクトップの2台を購入してきました。
どちらもWindowsOSなので、片方はLinuxにしたいところなのですが、購入時の価格の何割かがOS代かと思うとちょっと勿体なくて踏み切れていません。貧乏性...
そのミニデスクトップ上でDocker Desktop(以下DD)を稼働させ、Blogサイトの実装を進めてるたのですが、最近、MovableType(以下MT)で「再構築」を実行したとき、処理性能にかなり差があることに気付きました。
ミニは安物とはいえ、さくらVPSの最安プランよりは潤沢なスペックがあります。何でこんなに重いのか...? とGemini君に相談してみたところ、興味深い回答を得られました。
直接の原因は、DDのvirtualization boundary(仮想化境界)にありました。
DDのLinux仮想マシンとWindowsのホスト端末の間でファイルI/Oを行なう際には、ファイルシステムの差異を埋めるため、ファイル共有プロトコルが介在してきます。
私の環境では、MTが生成するコンテンツ群を、コンテナ外部の領域にアウトプットする設定にしているため、Blog再構築処理で大小多数のファイルが生成されると、1ファイルあたりに掛かる小さなオーバーヘッドが積み重なり、処理時間が大きく遅延することになるのです。
ホストOSがLinuxの場合は、Dockerはファイルを直接I/Oできるため、この分の遅延が発生しません。
この問題を解決するため、WSL2上でLinuxOSを稼働させ、そこのファイルシステムにコンテンツをI/Oする、という手段を取りました。ディストリビューションはVPSに導入したものと同じDebianを選択(これは単に統一感のためだけ)。
WSLに入って、VPSと同じディレクトリ階層を作り、GitHubから資材をcloneして全く同じ環境を構築します。ここから同じようにコンテナを走らせ、ブラウザから再構築を実行させます。ファイル共有プロトコルが挟まらないため、本来の高速な処理が実現しました。
全く同じ環境を簡単に複製できるのが、Dockerの非常に便利なところですね。