WSL2でDockerからネットワークドライブに接続する方法
WSL2のホストやWSL2内で起動したDockerコンテナからネットワークドライブのファイルにアクセスする方法です。
Windows側の設定
まず、Windowsの機能の「SMB 1.0/CIFSファイル共有サポート」が有効になっていることを確認します。
- コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化を開く
- SMB 1.0/CIFSファイル共有サポートにチェックが入っていることを確認する
- チェックが入っていない場合は、該当項目をチェックし、Windowsを再起動する
ホストWSLの作業
次にWSL2側でネットワークドライブにアクセスするために、ネットワークドライブをマウントします。
次のコマンドを実行し、必要なライブラリをインストールします。
sudo apt update
sudo apt install cifs-utils
ネットワークドライブをマウントするためのディレクトリを作成します。(-p
オプションを指定することで、複数の階層を一度に作成できます)
sudo mkdir -p /mnt/nas
以下のコマンドを使用して、ネットワークドライブをマウントします。USERNAME
やPASSWORD
には、実際にネットワークドライブにアクセスするための認証情報を設定してください。
sudo mount -t cifs //10.10.100.1/share-data /mnt/nas -o username=USERNAME,password=PASSWORD,vers=3.0,iocharset=utf8
日本語を含むディレクトリがエラーでマウントできなかったり、ディレクトリ内のファイルやサブディレクトリの日本語が文字化けする場合は、上記のようにiocharset
を指定することで改善されることがあります。
Dockerコンテナからのアクセス方法
Dockerコンテナからはボリュームを指定して、上記ホストの/mnt/nas
ディレクトリをコンテナにマウントするだけです。
volumes:
- /mnt/nas:/nas
docker run -v /mnt/nas:/nas image_name