バッチファイルの置き場所を WSL2 経由でマウントして Docker コンテナを起動する方法
これは何?
バッチファイルをダブルクリックして、Docker for Windows で起動する際に、そのバッチファイルの場所を WSL2 ボリュームとしてマウントする方法を提案します。
想定読者
- WSL2 版 docker を導入している人
- docker 起動時に volume をマウントしたときに、性能が悪いと警告された人
- docker 起動するときにいちいち wsl を起動するのが面倒くさい人
結論
バッチファイル名のコンテナイメージを起動する例を示します。バッチファイル名を変えると、起動するコンテナイメージが変わります。
@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 のパスに変換する処理です。
これで、警告が消えてスッキリ!
参考
Author And Source
この問題について(バッチファイルの置き場所を WSL2 経由でマウントして Docker コンテナを起動する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/2fbCvmiYKX/items/39a0d9f15543528aa712著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .