とりあえず、ubuntuでの録画環境は作れたので、とりあえずsamba入れないとなぁ。ってことで。
まあ、普通のsamba 3のインストールなら何度もやっているので特に苦も無くできるけど、
今回の環境では、ちょいとdockerについて知識をつけたいな、ということで、
sambaもdockerでいれちまえーとやってみた。今日のブログは完全に自分用備忘録。
dockerのコンテナイメージとしてはvimagick/sambaを使いました。
ホーム下にsambaディレクトリを作成して、そこにdocker-compose.ymlと、smb.confを入れればOK。
そのあたりは、ネットに落ちている情報ををたどればできるわけで。
まあ、そのうえで、探そうとしてすぐに出てこない情報とすれば、docker-compose.ymlとsmb.confでのフォルダのマウントの仕方というか記述の仕方ぐらいだろうか。
docker-compose.ymlのほうの記述もvimagick/sambaの場合は、こう書けばいい。という情報は落ちているけから、それをコピペして自分の環境に合わせて書き換えていくわけだけど、
例えば、/home/hoge/chinachu/recorded/ を録画データのフォルダとして、これをネットワーク内で共有したい場合、
docker-compose.ymlの中のvolume: のセクションはこうなるわけです。
先頭のn + 数字:は、行だと思ってくだされ。
n + 0: volumes:
n + 1: - ./smb.conf:/etc/samba/smb.conf
n + 2: - /home/hoge/chinachu/recorded: /recorded
n+2行目で定義している。 つまりコロンの手前に書くのは、実際のフォルダ/ファイルの位置で、
コロンの後ろに書くのはdockerのコンテナ内のフォルダ/ファイルのマウント位置。
つまり、共有したいフォルダの位置は/home/hoge/chinachu/recorded だけど、dockerのsmabaコンテナ内では、ルート直下の /recorded だということです。
ちなみにn+1行目では、docker-compose のある位置(./)に保管されているsmb.conf(ファイル)を、Docker内で動いているsambaから見たコンテナ内で本来smb.confの置くべき位置にマウントするわけで。
まあ、そうしなかったら、コンテナ内からコンテナの外にあるsmb.confファイルが参照できないわけで。
で、smb.confはまあ、普通にsambaを運用している人なら書けるでしょう。
当然、dockerのコンテナ内のsambaから見ると、共有すべきフォルダーは、ルート直下の/recordedなので、それに合わせてsmb.confを書けばいい。
まあ、sambaのguiツール(例えばsystem-config-samba) で設定していると、smb.confの書き方忘れてしまうけれど。。。guiツールで編集してもいいとは思うが。その辺は自分で調べてくれ。
しかし、こうやってdockerでアプリを導入すると、今までのソフトのインストール/更新のめんどくさい作業は何だったんだろ、と思う。起動も停止も削除も「コンテナ」に対する指示だけで済む。
dockerのコンテナと、実環境の間のデータ/情報の受け渡し方法(ファイルやフォルダのマウント位置とか、tcpなどのポートのフォワード定義をすればとりあえず動くということと、その定義はdocker-compose.ymlの中に書けばいいって話だな。
なるほど。