ARM32でDockerは少数派!?

Dockerの基本的な使い方も問題なさそうだったので、Docker Desktop + Visual Studio Codeな環境を作成して、Docker composeの基本的な使い方を勉強しようと、比較的メジャーな組み合わせと思われるnginx + php + mysql (mariadb)なアプリを作成してみた。

Docker Desktopでは問題なく動作する事が確認できたので、早速QNAP上のDocker composeでビルドしようとするとmysql (mariadb)のイメージがDocker Hubから見つからないというエラーが発生する。

そう、今使っているQNAPのTS-431PのCPUはARM (arm32v7, armhf)なのだが、nginxやphpのARMv7 (32bit)用のイメージはあるのだが、mysql (mariadb)のARMv7 (32bit)用イメージはDocker Official Imagesには何故かないのだ。

同じDatabaseで言えばpostgresはARMv7 (32bit)用のイメージが存在しているのに…mysql (mariadb)が存在しないとは。

こればかりはどうしようもないので、仕方なくUn-Officialなイメージのlinuxserver/mariadbを利用するように定義ファイルを書き換える事で、ビルドそのものは問題なく実行できるようになったのだが…

各種設定など細かい部分でOfficialなmariadbのイメージとは差異があるようで、どの設定が異なり、どう設定すれば良いのか、全て正常に動作するようになるまでの地道な調整作業が必要なようだ。

Share

今更だがDockerを勉強中!?

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コンテナだけのアプリってどんな意味があるのか理解できていないので、とりあえず複数コンテナを組み合わせたアプリの作成を覚えたいなと。

Share

QNAPをTS-431Pに交換

最後の投稿から約2年半、このブログもほぼ放置状態だったのだが、先日3年半以上使ってきたTS-231+が故障したので、TS-431Pへアップグレードしたついでにブログの投稿も久々に行うことに。

最初、HDD 1にエラーが発生したのでHDDの故障かと思い新しいHDDを購入・交換するもエラーが改善しなかっため、TS-231+本体の故障と判断し新しいNASを購入することに。

新しく購入するNASの候補としてはTS-351かTS-431Pかで少し悩みましたが、TS-351は在庫がないか、在庫があっても販売価格が高い販売店のみ。という状況だったので、TS-431Pを購入することに。

NASの交換は今回で2回目なので、特に大きな問題もなく…と言いたいところだったが、今回は何故か交換後にインストールしてあったアプリが2個ほど正常に動作していない事が判明した。

  • Multimedia Consoleが動いてない
  • Container Stationの設定画面が開かない

最初はMedia Streaming add-onの起動失敗エラーの通知で、Multimedia Consoleを開くとページが見つからない、いわゆるHTTP/404エラーのようだが、このアプリはプリインストールのためApp Centerで(上書き)再インストールもできない。

解決方法はQNAPのサポートページから直接qpkgをダウンロードして、手動インストールする事で復旧できたけど、この方法に辿り着くまでちょっと悩んだ(汗)

次のContainer Stationはアプリ自体は動いているように見えるが、設定画面を開くと「Loading…」のまま先に進まない。しかもApp Centerで(上書き)再インストールしても問題が解決しない。

こちらの解決方法は結局アプリを削除してから再インストールする事で復旧できたけど、こちらは最悪データ(コンテナ)ファイルが壊れている可能性も考えられたので、復旧するまでは冷や汗ものだった。

多少のトラブルはあったが、無事にNASの復旧・アップグレードが完了したので、この機会にもう少しQNAPを活用できないかと思案中。

そこで、今まで中途半端な活用だったDockerの使い方をもう一度勉強し直そうと少し触ってみたが、Container StationにバグがあるようでWebUIでImageからContainerを直接作成すると、コンテナとホスト間のVolumeのマウント情報が正常に反映されないという問題が発生する…

ただ、WebUIでApplicationを作成すると問題ないし、sshでdockerを直接コマンドラインから実行してコンテナを作成しても問題ない。これは完全にQNAPのContainer Stationのバグだな…

単純なコンテナを作成する場合は少し面倒だが、docker-composeに相当するアプリケーション作成には問題ないし、どうせDockerfileをビルドするにはsshから直接作業をする必要があるので、大きな問題にはならないと思いたい。

さて、久々にブログを更新してみたが、次の更新はいつになるのか…そちらの方が大きな不安かも。しかも今はコロナウイルスの影響で日常生活も大きく変わってしまって大好きな旅行にも行けない状態だしな〜

Share