背景
今まではOpenStackにCentOSでファイルサーバ立てていたけれど, OpenStack再構築ややらかしちゃったときに退避データが被害受けるのは辛い。
ということで, せめてホストOS直でファイルサーバを立てようかと思ったが, せっかくKollaでOpenStack立てて, dockerが入っているのだからコンテナでファイルサーバ立ててみようと思った。
コンテナでsambaを立てる |
参考情報
Docker上 で samba を動かしてファイル共有する
dperson/samba
docs.docker.com
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
手順
- ファイルマウント用のディレクトリ作成
- アカウントにdocker権限付与
- sambaコンテナデプロイ
- smb.conf編集
- コンテナ再起動
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
ファイルも置けている。確かに早い!