WSL2でDockerからネットワークドライブに接続する方法

WSL2のホストやWSL2内で起動したDockerコンテナからネットワークドライブのファイルにアクセスする方法です。

Windows側の設定

まず、Windowsの機能の「SMB 1.0/CIFSファイル共有サポート」が有効になっていることを確認します。

  1. コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化を開く
  2. SMB 1.0/CIFSファイル共有サポートにチェックが入っていることを確認する
    SMB 1.0/CIFSファイル共有サポートの設定
  3. チェックが入っていない場合は、該当項目をチェックし、Windowsを再起動する

ホストWSLの作業

次にWSL2側でネットワークドライブにアクセスするために、ネットワークドライブをマウントします。

次のコマンドを実行し、必要なライブラリをインストールします。

sudo apt update
sudo apt install cifs-utils

ネットワークドライブをマウントするためのディレクトリを作成します。(-pオプションを指定することで、複数の階層を一度に作成できます)

sudo mkdir -p /mnt/nas

以下のコマンドを使用して、ネットワークドライブをマウントします。USERNAMEPASSWORDには、実際にネットワークドライブにアクセスするための認証情報を設定してください。

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
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です