LinuxでDockerコンテナからWindowsのファイルをマウントする実例

– WSL2環境とは別に、純Linux環境でのDockerとWindows資源アクセスを実現する設定例

はじめに

DockerをLinux上で利用する際、通常はLinuxのローカルディレクトリをボリュームとしてコンテナにマウントします。しかし業務環境によっては「Linuxサーバー上で動くDockerからWindows共有フォルダにアクセスしたい」というケースがあります。

本記事では、純Linux環境でのDockerコンテナからWindows資源をマウントする具体例を紹介します。WSL2を前提としないため、オンプレLinuxサーバーやクラウドLinux環境でも応用可能です。


前提環境

  • ホストOS: Ubuntu 22.04 (任意のLinuxでも可)
  • Docker: 20.x 以降
  • Windows共有フォルダ: \\192.168.1.50\shared
  • Windows側でSMB共有が有効化済み(アクセス権限設定済み)

手順概要

  1. LinuxにWindows共有フォルダをマウントする(CIFS/SMBを使用)
  2. マウントしたディレクトリをDockerコンテナにボリュームとして渡す

1. CIFSクライアントのインストール

LinuxでWindows共有を扱うにはCIFSパッケージが必要です。

sudo apt update
sudo apt install cifs-utils -y

2. Windows共有フォルダのマウント

Windowsサーバーの共有フォルダをLinux上にマウントします。

一時的にマウントする場合

sudo mount -t cifs //192.168.1.50/shared /mnt/winshare \
  -o username=windows_user,password=windows_pass,vers=3.0
  • /mnt/winshare はLinux側のマウント先
  • vers=3.0 はSMBのバージョン(環境に応じて変更)

永続的にマウントする場合(/etc/fstabに設定)

認証情報を別ファイルに保存します。

sudo nano /etc/samba/credentials
username=windows_user
password=windows_pass

権限を制限

sudo chmod 600 /etc/samba/credentials

/etc/fstab に追記

//192.168.1.50/shared /mnt/winshare cifs credentials=/etc/samba/credentials,vers=3.0,iocharset=utf8 0 0

反映

sudo mount -a

3. Dockerコンテナでマウントする

LinuxでWindowsフォルダが /mnt/winshare にマウントできたら、Dockerコンテナに渡します。

例:Ubuntuコンテナでマウント

docker run -it --rm \
  -v /mnt/winshare:/data \
  ubuntu:22.04 bash

これでコンテナ内の /data にWindows共有フォルダが見えるようになります。

例:NGINXコンテナでWindowsフォルダを公開

docker run -d --name web \
  -v /mnt/winshare:/usr/share/nginx/html:ro \
  -p 8080:80 \
  nginx

ブラウザで http://<LinuxサーバーIP>:8080 にアクセスすると、Windows共有フォルダの内容がWeb公開されます。


4. トラブルシューティング

  • 接続できない場合
    • Windows側のSMBバージョンを確認(SMB 1.0 が無効化されている場合は vers=3.0 を利用)
    • ファイアウォールでTCP 445番ポートが開放されているか確認
  • 認証失敗する場合
    • ドメイン環境では username=DOMAIN\\user の形式で指定
    • /etc/samba/credentials の改行やスペースを再確認

まとめ

本記事では、純Linux環境でDockerコンテナからWindowsの共有フォルダをマウントする方法を紹介しました。

手順を整理すると

  1. LinuxでWindows共有フォルダをCIFSでマウント
  2. Dockerの -v オプションでボリュームとして渡す

これにより、Windowsの社内ファイルサーバーやNAS上のデータを、Linux上のDockerアプリケーションから直接利用できます。

タイトルとURLをコピーしました