NASのDocker機能を使ってお手軽にLinux環境を作った話。NASで小規模なLinux環境を作りたい方の参考になれば幸いです。最近のものであれば他メーカーのNASでもよく似た感じなのだと思います(QNAP ContainerStation)。
今のNASはホント色々できる
かつての家庭SOHO用NASは、”WindowsとMacからファイル共有ができる”だけでしたが、今時のNASはホント色々できてファイル共有はもちろん、専用スマートフォンアプリによる外部からのファイル・写真・動画の共有/閲覧、DropboxやGoogleDriveとの連携、DLNAやDBなどの各種サーバ機能などなど、ちょっと良い奴になるとモニターがつながってhdmiから映像が出たり、VMの中でWindowsを動かすこともできたりして、もうPCサーバと一緒と言った感じになってます。
今時はNASなんか買わなくてもインターネットのストレージサービスの値段も下がって良い感じになっていますが、光回線が来てない田舎に住んでいるので上りの速度が遅すぎて、オンラインサービスでは まだまだ大きなファイルを気軽には扱えません。
それって小型のPCじゃダメなの?
サーバものに精通していて時間と予算さえあればPCでも良いと思います。
当初は小さいMini-ITXなどで作ろうかなぁとも思ったのですが、ディスクを数本入れられるマザーボード&ケースや、静音性、耐久の事を考えて色々選ぶと結構なお値段&大きくなる&何より面倒くさい… と言うことでNASを探しました。
安定して早く動くNASが欲しい
価格.comや2chなんかを見ていると、いろんな製品があることがわかり 今回の予算帯(3万前後)では下記の製品で迷いました。
- NETGEAR ReadyNAS 104
安価な4ベイ。DebianベースのOSで、歴史が長いのでネット上にノウハウが溜まってる。ただ、発売が2013年とちょっと古くて転送速度も少し遅目。ファイル保存のNASとして安定して使うだけなら悪くない。
- Synology DS215j
価格.comで売れ筋。悪くはないけど別に沢山のアプリがあっても使わないしなぁと。尖ったところがない良くも悪くもない印象。
- ASUSTOR AS-202TE
他と値段はあまり変わらないのにIntel ATOM & HDMIがついて楽しそう。ただ、HDMIを使わないとの、2chでファームを上げる度に「何かおこる」と書いてあって、安定したファイル保存場所が欲しかったので避けることに。
で、結局選んだのは、下記の製品。
- QNAP TS-231+
TS-231とTS-231+は結構違うので注意が必要。無印はDocker使えません。安定したファイル共有ができるのと「Dockerが使える」と言うのが大きなポイントでした。
ちょっとその前に(セキュリティ)
QNAPは普通に設定すると勝手に「NASのファイルを外から取れるようにしておきましたよ。便利でしょ!」機能をONにしてしまうので、QNAPにログイン→myQNAPcloud→自動ルータ構成→UPnPポート転送を有効化のチェックを外しましょう。最近のアプリてんこ盛りNASは初期状態で色んなサービスが上がってるのが怖いです。
なぜDocker?
上記のNASはどれもLinuxベースなので、SSHでNASへログインし、あれこれすると(場合によってはマウスでポチポチするだけで)そのまま良い感じのLinuxマシンになります。ただ、用意されてない事をちょっとでもしようとすると、よく使うコマンドすら入れるのに苦労したり、再起動したら設定が消えたりと、「制限の回避」に時間と労力を使うのでちょっと面倒。
Dockerなら速度も早く、NASのOSとは分離された仮想環境ができるので上記のような制限も受けないため、従来通りの環境をストレス無く作ることができます。作った環境を丸々引っ越せるのも便利です。
QNAP ContainerStationのインストール
Docker環境を作るのはマウスでポチッとすれば良いだけでした(ver 1.2.19.593)。
ただ、今回の場合はポチッとしただけでは1時間位待ってもブラウザが白くなり先に進まなかったので、sshでnasへ接続し、インストール時に決めたDockerのデータが入る場所の権限の変更とnasの再起動をしたら使えるようになりました(権限の変更が必要だったのかは不明)。まぁ使えているのでこのままにしておきます。
chown -R admin.administrators ./container-station-data
ContainerStationを使うと、docker serverの設定変更、コンテナイメージのダウンロードやコンテナ生成、コンテナの起動/停止、ログの確認などをブラウザから行えます。黒い画面は一切無し!
コンテナイメージのダウンロード
左側の「コンテナの作成」を選ぶとQNAP推奨イメージが幾つかでてきて、右上の「イメージ検索」に入力するとDockerHubのイメージを探してくれます(レジストリは手動でも追加可能)。
ただ、注意したいのは今回の機種(TS-231+)のCPUはARM系。数多あるDockerHubのイメージの殆どはIntel系なので、ほとんど使えません。買う前から主要ディストリビューションのARM版があることは確認していたのでまぁいいやと思っていましたが、いざ作る段階になると(人が作ったイメージを使う方が楽なので)やっぱり若干面倒でした。
初回はダウンロードと下記コンテナ作成と同時におこないます。直ぐにローカルディレクトリをマウントしたい場合などはこの時点で設定(下記 コンテナの作成を参照)をおこないます。
イメージのダウンロードは結構時間がかかり、ブラウザに何も出てこないので若干心配になりますが、ほっといたらダウンロード完了→コンテナが起動します(今回はHTML5ベースブラウザでVNCが使えるubuntu-noVNCでテストしました)。
コンテナの作成
ここで、Dockerfileに記述するような内容を設定します。設定項目はこんな感じ。
- コンテナ名
- コマンド
- エントリーポイント
- CPUリミット、メモリー制限
- NAS起動時の自動起動設定 !
- 環境変数
- ネットワークのポートフォワーディング
- ローカルディレクトリをマウント/他のコンテナの接続
ローカルディレクトリのマウント場所をNAS内の共有ディレクトリ(/share/??????/hoge)などにしておくとDocker内で生成されたファイルがそのまま外部から閲覧/編集できて幸せです。
色々設定変更→コンテナのコミット
ベースイメージでは色々と過不足があったので作ったコンテナに接続し、ソフトを入れたり消したりしました(ちなみに今回のイメージのsudoパスワードはubuntuだった)。
一旦この状態をイメージ化したかったのですが、(今のところ)Web上にはコミットするようなボタンはありません。sshでnasに接続し、dockerコマンドでコミットしました(今回は同一イメージに上書き)。この辺りは今後のバージョンアップで良い感じになっていきそうな気がします。
docker commit ubuntu-novnc-armhf-1 colinhuang/ubuntu-novnc-armhf (docker commit コンテナ名 イメージ名)
コンテナの再作成
ContainerStationから上記コンテナを削除し、先ほどコミットしたローカルイメージからコンテナを生成→設定内容が正しいことを確かめます。ちゃんと動いてる。楽ちん。
Dockerfileからのビルド
これを書いている時点ではGUIからDockerfileをペーストしてビルドみたいな機能はありません。SSHでログインし、docker buildは可能です。
最後に
NASでDockerなんて、もうちょっと不安定なものかなぁとも思っていましたが、管理ツールのデキも良く、なかなかよい感じでした。
おまけ機能を越えている多機能NAS。数年経つとNASって言葉の定義も変わってそうだなぁと思いました。いやー便利な世の中になったものです。
【2016/10追記】数ヶ月使ってみたのですが結果としては、動きはするのですがこの機種ではメモリが少なく(最大1GB/後付できない)、メモリ不足がNASの性能にも影響出ている気がしたので運用をやめました。Dockerをもう少しましに使いたいなら、もう1ランク上のIntel CPUがのっていて、メモリも後付で最大8GBまでつめるTS-251+が良さそうな気がします。
コメント