Windowsのwsl2(Ubuntu)上のDockerでNASにマウントしようとした記録

容量の都合上、NASにデータを格納しています。また、ローカル環境をあまり汚したくないのでDockerを利用したいです。
しかし、wsl2(Ubuntu)上のDockerでNASにマウントするのに、一苦労あったので、自分用のメモとして執筆します。

  • Windows11

  • wsl2

  • Docker(WSL上)

  • Buffalo LS720D(NAS)

wsl2(Ubuntu)上のDockerでNASにマウントする

wsl2(Ubuntu)でNASにマウントする

まず、wsl2(Ubuntu)でNASにマウントすることにしました。
それにあたり、必要なパッケージをインストールします。

$ sudo apt install cifs-utils

そして、マウント先の/mnt/smbを作成し、マウントを実行します。

$ sudo mkdir /mnt/smb
$ sudo mount -t cifs -o 'username=USER,password=PASSWORD' '//[NASのIPアドレス]/share' /mnt/smb

この時、下記のエラーが出た場合は、IPアドレスが間違えてる可能性があります。

mount error(13): Permission denied

DockerでVolumeとして設定する

まず、docker-compose.ymlを作成します。
volumesはマウント先の/mnt/smbにしています。

version: '3'
services:
  hoge-service:
    image: ubuntu:latest
    volumes:
      - /mnt/smb:/smb
    tty: true

そして、下記のコマンドを実行します。
1行目:コンテナの作成と起動
2行目:Bashでコンテナの中に入る

$ docker compose up -d
$ docker compose exec -it hoge-service bash

ここまで、実行すると起動したコンテナの中に入ったあとは、/smbを除くとマウント先の情報が見れます。

$ ls ./smb

参考サイト


自分用のメモ

そこそこ四苦八苦したので、自分用のメモで書いときます。

drvfsでマウント

Dockerにマウントさせるまでは、drvfsでマウントさせてました。
そのまま利用しようとしたんですが、wsl2(Ubuntu)上のDockerでは対応してないようでしたので、諦めました。

NSFでマウント

NSFでマウントすると、wsl2(Ubuntu)上のDockerでも利用できると書いてるサイトがありました。
下記のコマンドを入力しました。

$ sudo apt-get install nfs-common

$ sudo mkdir -p /run/sendsigs.omit.d/rpcbind
$ sudo /etc/init.d/rpcbind start
$ sudo /etc/init.d/nfs-common start

$ sudo mkdir /mnt/nfs
$ sudo mount -t nfs -o nolock [NASのIPアドレス]:/share /mnt/nfs/

しかし、僕が使ってるNASのBuffalo LS720DではNSFの設定がないようなので諦めました。

docker-compose.ymlとcifsでマウント

docker-composeでcifsの設定ができるようなので、下記のようにdocker-compose.ymlを書きました

version: '3'
services:
  hoge-service:
    image: ubuntu:latest
    volumes:
      - my-smb:/smb
    tty: true

volumes:
  my-smb:
    driver_opts:
      type: cifs
      o: "username=USER,password=PASSWORD"
      device: "//[NASのIPアドレス]/share"

しかし、僕はうまくいかなったので、WSL上でマウントしました。


この記事が気に入ったらサポートをしてみませんか?