QNAPを使い始めて早くも6年半。当時はContainer Stationもなければ、スレージプール機能も存在しなかった。
そんな中でQNAPを単なるファイルストレージとして使わず、LinuxサーバとしてOpenPNEなどをQNAP上で直接運用して来たのだが、最近のバージョンアップで最新のPHPに対応していないOpenPNE2が動作しなくなり、新機能のHybridMountを使おうにもストレージプールに変更しないと使えないし、App Centerに今まで存在していたアプリが消えて無くなるなど制約が多数発生するようになってきた。
QNAP上で運用していた様々なアプリに問題が生じるようになってきたので、そろそろアプリの運用方法も見直さないとやばいかな〜と思い始めたので、今更ながらDocker(Container Station)の使い方を勉強し始めた。
今までQNAP上でネイティブで運用していたアプリをDockerで置き換えできれば、今後何かあってもデータとDockerの定義ファイルさえ残っていれば、復旧させるのも、新しい環境へ移行するにも楽かなと思って。
しかし、まだまだ使い方を勉強し始めたばかりで、理解できていない部分も多いのか、QNAPという環境が特殊なのか、苦労する事も多い。
ネットの情報を元にコンテナを作ろうとしても、何故かpullしてくるイメージがIntel系になってしまい、今使っているQNAP(ARM)だと正常に動作しなかったり、buildして作成したイメージに名前を付けなかったり、同じ名前を付けると古いイメージの名無しになってしまって、Container Stationのイメージ一覧に表示されない、など癖があって何かと苦労する。
更にQNAPのWebUIではDockerfileをbuildする方法が用意されていないので、QNAPのWebUIからQNAP自身にssh接続するためのDockerfileを作ってみたが、docker runとかで使えるように最後のENTRYPOINTやCMDで直接shellを起動するようにしたら、QNAPのContainer Stationでは何故か正常に動作しない。
仕方がないので、何もしないコマンド(実際は「tail -F /dev/null」)でコンテナを実行状態にしてからWebUIのターミナルを起動する方法で誤魔化す事でQNAPにWebUIからssh接続できるようになった。
とりあえず、基本的なイメージ、ボリューム、コンテナを作成して、QNAP上で実行するところまでは問題なくできるようになったかな。
次はDocker Compose(QNAP上でのアプリケーションの作成)だが、中身が1コンテナだけのアプリってどんな意味があるのか理解できていないので、とりあえず複数コンテナを組み合わせたアプリの作成を覚えたいなと。