はじめに
Sambaは、WindowsのPCから自宅サーバー上のフォルダを、まるで自分のPCのドライブのように読み書きできるようにする定番のファイル共有ソフトです。本ページでは、Dockerコンテナで手軽にSamba共有を構築します。
1. 詳細な技術要素
| 用語 | 説明 |
|---|---|
| SMB/CIFS | Windowsのファイル共有で使われる通信プロトコル。ポート445(新しいバージョン)と139(古いバージョン、NetBIOS)を使用する。 |
| dperson/samba | コマンドライン引数だけでユーザーと共有フォルダを設定できる、広く使われているSamba用Dockerイメージ。 |
| net use(Windows) | Windowsでネットワーク共有フォルダをドライブとして割り当てるコマンド。 |
2. 実証手順
1
ポートを許可し、共有フォルダを用意する
実行コマンド
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
mkdir -p ~/samba-share
echo "テスト用ファイル" > ~/samba-share/test.txt
2
Sambaコンテナを起動する
実行コマンド
sudo docker run -d --name samba --restart=always \
-p 139:139 -p 445:445 \
-v ~/samba-share:/share \
dperson/samba -p -u "shareuser;(強力なパスワード)" -s "share;/share;yes;no;no;shareuser"
-uでユーザー名とパスワードを、-sで共有名・共有するパス・ゲスト可否・読み取り専用か・ブラウズ可否・アクセス許可ユーザーを指定する。
3
Windowsから接続確認する
実行コマンド(Windows PowerShell側)
net use Y: \\(サーバーのIP)\share /user:shareuser (設定したパスワード)
Get-ChildItem Y:\
Get-Content Y:\test.txt
net use Y: /delete
実機で共有フォルダへの接続、ファイル一覧の取得、ファイル内容の読み取りまで確認済み。エクスプローラーから\\(サーバーのIP)\shareを直接開く方法でも同様にアクセスできる。
3. トラブルシューティング
net use で「システムエラー 85」(ローカルデバイス名は既に使用されています)
解決策:割り当てようとしたドライブ文字(例:Z:)が既に別の用途で使われている。net use Y:のように、まだ使われていない別のドライブ文字を指定する。
4. まとめ
Dockerコンテナで手軽にSamba共有を構築し、WindowsのPCから実際にファイルの読み書きができることを確認しました。WordPress・Nextcloud同様、既存のコンテナ(ポート80・8080)と共存させる形で、ポート139・445を使って運用しています。