dockerでファイルサーバ立てる

背景

今まではOpenStackにCentOSでファイルサーバ立てていたけれど, OpenStack再構築ややらかしちゃったときに退避データが被害受けるのは辛い。
ということで, せめてホストOS直でファイルサーバを立てようかと思ったが, せっかくKollaでOpenStack立てて, dockerが入っているのだからコンテナでファイルサーバ立ててみようと思った。

コンテナでsambaを立てる

参考情報

Docker上 で samba を動かしてファイル共有する
dperson/samba
docs.docker.com
Docker道場「Dockerの基本概念」0825インフラ勉強会資料

手順

  1. ファイルマウント用のディレクトリ作成
  2. アカウントにdocker権限付与
  3. sambaコンテナデプロイ
  4. smb.conf編集
  5. コンテナ再起動

1.共有ディレクトリ準備

/share/NAS という場所にする。

mkdir /share/NAS
chmod 777 /share/NAS

2.dockerグループ追加

root以外のアカウントでコンテナ実行したいのでdockerグループに追加。(セキュリティ的に好ましくないそう)

sudo usermod -aG docker user

コンテナデプロイ

$ docker run --name NAS             # コンテナ名
-p 139:139 -p 445:445 # ポート139と445を開放
-v /share/NAS:/mnt/nas # /share/NAS を /mnt/nas にバインド
-d dperson/samba # dperson/samba をデプロイ
-u "samba;sambapass" # dperson option) samba ユーザを作成(パスワードも一緒に)
-s "nas:/mnt/nas;no;no;no;samba" # dperson option) /mnt/nasを nas という名前で, 公開せず, ROせず, ゲストも拒否, sambaユーザ限定

3.smb.conf編集

デフォルトだとsmbuserに作成者とか上書きされるので, コンテナにログインしてsmb.confを編集。

$ docker exec -it NAS /bin/bash
bash-4.4#

vi /etc/samba/smb.conf

   pam password change = yes
map to guest = bad user
usershare allow guests = yes
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
# force user = smbuser #コメントアウト
# force group = users #コメントアウト
follow symlinks = yes
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
socket options = TCP_NODELAY
strict locking = no
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
min protocol = SMB2

4.コンテナ再起動

$ docker restart NAS

完成。確認。

アクセスできてファイルも置けた

$ ls /share/NAS/
test test2

ファイルも置けている。確かに早い!