LoginSignup
2
1

More than 3 years have passed since last update.

バッチファイルの置き場所を WSL2 経由でマウントして Docker コンテナを起動する方法

Last updated at Posted at 2020-11-11

これは何?

バッチファイルをダブルクリックして、Docker for Windows で起動する際に、そのバッチファイルの場所を WSL2 ボリュームとしてマウントする方法を提案します。

想定読者

  • WSL2 版 docker を導入している人
  • docker 起動時に volume をマウントしたときに、性能が悪いと警告された人
  • docker 起動するときにいちいち wsl を起動するのが面倒くさい人

結論

バッチファイル名のコンテナイメージを起動する例を示します。バッチファイル名を変えると、起動するコンテナイメージが変わります。

buildpack-deps.bat
@setlocal
@set "WORK=/root/workspace"

@cd /d "%~dp0"
@set "IMG=%~n0"

@if "%~0" == "%~f0" set "pause_if_error=@if errorlevel 1 pause"

@for %%i in ( "%CD%" ) do @set "WSL2CD=%%~di"
@for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @call set "WSL2CD=%%WSL2CD:%%~i=%%~i%%"
@for %%i in ( "%CD%" ) do @call set "WSL2CD=%%WSL2CD:~0,-1%%%%~pnxi"
@set "WSL2CD=/mnt/%WSL2CD:\=/%"

wsl -e docker run -it --rm -w "%WORK%" -v "%WSL2CD%:%WORK%" %IMG% %*
%pause_if_error%
@exit /b %errorlevel%

マウントポイントは @set "WORK=/root/workspace" に直書きなので、適宜書き換えてください。
image を固定する場合、 @set "IMG=%~n0" を書き換えてください。
wsl の distro を指定していませんので、指定したい方は適当に wsl の option を追加してください。

確認環境

Windows10 1909
Docker version 19.03.13, build 4484c46d9d

解説

docker を起動する際、 wsl コマンドを経由します。
ボリュームは wsl 上の path を指定します。
WSL2CD の操作をごにょごにょやっているのは、 windows path から WSL のパスに変換する処理です。

これで、警告が消えてスッキリ!

参考

2
1
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
2
1