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上でマウントしました。
この記事が気に入ったらサポートをしてみませんか?