概要
WSL上でdockerを使用する場合、docker for windowsに接続して使用する事が一般的かと思います。
ここで、一番厄介なのがボリュームのパスです。
docker for windowsはwindowsの世界で動いているので、マウントするボリュームパスとしてはwindowsのパスを指定する必要が有ります。
WSL上のshellから「カレントディレクトリの内容をdockerに食わせたい」と考えた場合、パスの形式が違うので一度変換する必要が有ります。
スクリプト等でこれをやろうとする、WSLと普通のlinuxで書き方が変わってしまってややこしいので変換関数を作りました。
変換補助関数
以下が今回作成した補助関数です。
これを使うと、WSLの場合は、現在のパスがwindowsのパスとして取得されます。
function getPWD(){
local t_PWD=`pwd`
if [ -f /proc/sys/fs/binfmt_misc/WSLInterop ]; then
echo `wslpath -w $t_PWD`;
else
echo $t_PWD
fi
}
使用イメージ
カレントディレクトリをlocalにマウントする
pwd=`getPWD`
docker run --rm -v ${pwd}:/local ${DOCKER_IMAGE}