Container Station でよくあるコンテナ関連の問題をデバッグし、解決する方法
Container Station は、サードパーティ製アプリケーションやコンテナを QNAP デバイス上にデプロイできるようにします。これらのコンテナの作成に使用されるオープンソースイメージは、デプロイメント上の問題を引き起こす場合があります。
QNAP は、サードパーティ製イメージに対するテクニカルサポートは提供しません。コンテナに関連する一般的な問題を調べ、解決させるには、以下の手順を行ってください。
コンテナ設定を確認する
コンテナは、そのソースイメージの属性をすべて継承します。デプロイメントする前に、イメージファイルをスキャンし、セキュリティの脆弱性、誤設定、バックドアの脅威を確認します。
デプロイメント後にコンテナで問題が生じた場合には、コンテナログを分析して問題を調べ、解決してください。
イメージ情報を調べる
コンテナをインストールする前に、イメージの前提条件を見直し、必要な手順を完了させてください。
たとえば、postgres
イメージを使用して PostgreSQL コンテナをデプロイするには、POSTGRES_PASSWORD
環境変数を設定する必要があります。この変数がないと、コンテナのデプロイが失敗します。
POSTGRES_PASSWORD
環境変数を指定してください。Container Station のイベントログを分析する
Container Station は、アプリケーションおよびコンテナの動作をすべてログします。エラーログは、アプリケーションまたはコンテナの名称、エラーコード、エラーの詳細を含む明示的なエラーメッセージを提供します。
- Container Station を開きます。
- [イベントログ]をクリックします。
- エラーログの場所を見つけます。
例1
この例では、イベントログが起動の失敗を記録しています。それは、指定したポートが他のサービスによってすでに使用されており、コンテナが必要となるネットワークインターフェイスをバインドできなかったためです。
例2
エントリーポイントコマンドの誤設定により、イベントログが起動の失敗を記録しているこの例では、コンテナが想定する処理を実行できませんでした。
個々のコンテナログをチェックする
エラーや警告メッセージがないか、個々のコンテナログを分析します。Container Station は、環境変数の不足、不正な名前形式、イメージ取得の失敗など、エラーの状態を詳細にログします。
- Container Station を開きます。
- [コンテナ]をクリックします。
- 詳細ページを開くには、コンテナを選択します。
- [ログ]をクリックします。
- エラーおよび警告のメッセージを確認します。
例1
MySQL コンテナをデプロイする前に、MYSQL_ROOT_PASSWORD
環境変数が設定されていなかったため、起動が失敗し、初期化後すぐに終了したことが、イベントログに記録されています。
例2
Rancher コンテナが、特権モードを有効にせずにrancher/rancher
イメージをデプロイしようとしたため、起動が失敗したことが、イベントログに記録されています。--privileged
フラグがないと、コンテナは適切に初期化することができません。
イメージの互換性を確認する
イメージが、お使いの QNAP デバイスのプロセッサーアーキテクチャとオペレーティングシステムに対応していることを確認します。イメージのバージョンやアーキテクチャが正しくないと、コンテナが実行できません。
プラットフォームの互換性を確認する
イメージのプラットフォームが、お使いの QNAP デバイスの CPU アーキテクチャに適合していることを検証します。イメージを別の QNAP デバイスに転送する場合、両方のデバイスが同じアーキテクチャを使用していることを確認してください。
Docker
Docker イメージページには、各イメージバージョンでサポートされるアーキテクチャとオペレーティングシステムの一覧があります。以下は、Docker イメージの一般的な互換性ガイドラインです。
linux/arm/v7
イメージが 32ビット ARM アーキテクチャをサポートする。linux/arm64/v8
イメージが 64ビット ARM アーキテクチャをサポートする。linux/amd64
イメージが 64ビット x86 アーキテクチャをサポートする。
LXD
互換性に関する詳細はkLXD イメージサーバーをご覧ください。以下は、LXD コンテナの一般的な互換性ガイドラインです。
armhf
コンテナが 32ビット ARM アーキテクチャをサポートする。arm64
コンテナが 64ビット ARM アーキテクチャをサポートする。amd64
コンテナが 64ビット x86 アーキテクチャをサポートする。
コンテナの非互換性をみつける
対応しない Docker コンテナは、exec format error
をログし、アーキテクチャの不一致を指摘する場合があります。
対応しない LXD がデプロイしようとすると、Container Station はイベントログページにエラーログを記録します。
ページサイズの対応をチェックする
QNAP は、特定の 32ビット ARM デバイスにおけるパフォーマンスを向上させるために、システムページサイズを 4K から 32K に更新しました。この変更は、コンテナがメモリリソースにアクセスする際の制限になることがあり、その場合にはセグメンテーションエラーが発生します。デプロイメント前に、サードパーティ製コンテナの互換性を検証してください。
シリーズ | モデル |
---|---|
TS-x31P | TS-531P |
TS-x31P3 | TS-231P3、TS-431P3 |
TS-x31X | TS-231X、TS-431X、TS-531X、TS-831X、TS-431X2、TS-431X3 |
TS-x31KX | TS-431KX |
TS-x31XU | TS-431XU、TS-431XU-RP、TS-831XU、TS-831XU-RP、TS-1231XU、TS-1231XU-RP |
TS-x31XeU | TS-431XeU |
TS-x35 | TS-1635 |
QNAP システム設定をチェックする
QNAP デバイスが、コンテナのデプロイメントとオーケストレーションのために積雪に設定されていることを確認します。
ネットワーク設定を検証する
- QNAP デバイスにログインし、ネットワークと仮想スイッチ を開きます。
- [詳細]モードを選択します。
- [ネットワーク] > [仮想スイッチ]に進みます。
- コンテナネットワークによって使われているネットワークセグメントを確認します。
- [コントロールパネル] > [システム] > [セキュリティ] > [許可/拒否リスト]に進みます。注意デバイスに QuFirewall がインストールされている場合には、QuFirewall を開いてから、必要なネットワークセグメントを許可リストに追加してください。
- コンテナネットワークセグメントが許可リストに追加されていることを確認します。重要QNAP では、次の IP アドレス範囲を許可リストに追加することを強くお勧めします。
10.0.3.0/24
,10.0.5.0/24
,10.0.7.0/24
,172.29.0.0/22
,172.30.0.0/22
。Kubernetes サービスが有効な場合には、10.42.0.0/24
(Kubernetes Pod Network CIDR) も追加してください。
高度な権限設定を確認する
- [コントロールパネル]>[権限設定]>[共有フォルダー]> [拡張パーミッション]に進みます。
- [詳細フォルダー権限を有効にする]を無効にします。
- [適用]をクリックします。
- [コントロールパネル] > [権限] > [クォータ]に進み、ユーザークォータ設定を確認します。注意クォータ設定は、クォータ管理が有効になっている場合にのみ適用されます。警告想定していないクォータ制限がないかどうか、ユーザークォータ設定を確認してください。誤ったクォータ設定があると、ストレージの制限が加わり、コンテナがエラーを報告することがあります。
ストレージとネットワークの設定を確認する
- [ストレージ&スナップショット]>[ストレージ]>[ストレージ/スナップショット]に進みます。
- 使用可能なストレージ容量を確認します。注意ステータスが準備完了以外の場合、ストレージエラーがないかどうかディスクステータスを確認してください。詳細については、QTS または QuTS hero ユーザーガイドのディスクの状態をご覧ください。
ネットワーク設定を確認する
ネットワーク設定正しく行われているかを、次の手順で確認します。
- [ネットワークと仮想スイッチ] > [ネットワーク] > [インターフェイス]に進み、DNS とゲートウェイの設定を確認します。
- DHCP サーバーが、仮想スイッチを使用してコンテナに IP アドレスを割り当てられるようにします。詳細については、QTS または QuTS hero ユーザーガイドの仮想スイッチ設定をご覧ください。注意仮想スイッチ設定中の、IP アドレスを割り当てない (外部ネットワークや孤立したネットワークを構築する場合などの特殊目的のため)設定は、特定のネットワーキング設定のためです。ネットワークのカスタムセットアップが不要な場合は、この設定を無効にしておくことをお勧めします。
ただし、外部ネットワークや孤立したネットワークをセットアップする場合には、これを有効にします。この設定値は、コンテナのネットワーク設定に影響を与えることにご注意ください。詳細については、QTS または QuTS hero ユーザーガイドの詳細モードで仮想スイッチを設定するをご覧ください。 - [Container Station] > [環境設定] > [ネットワーク設定]に進み、コンテナネットワークセグメントがローカル環境と競合していないことを確認してください。重要Container Station は、デフォルトの IP ネットワーク:として、
10.0.3.0/24
,10.0.5.0/24
および10.0.7.0/24
を使用します。
オンラインヘルプとドキュメンテーションを参照する
いくつかのオープンソースイメージは、ユーザーによるソースコードの修正を許可しています。いずれのトラブルシューティング手法を行っても問題の解決に至らない場合、ソースイメージが対応していないか、あるいは壊れている可能性があります。そのようなケースでは、QNAP ではイメージのウェブサイトをアクセスし、イメージについての詳細情報を見たり、同じカテゴリーの他のイメージを使ってみることをお勧めします。
イメージが Docker レジストリからのものである場合、詳細をそのイメージの概要ページで見ることができます。たとえば、Docker の Ubuntu image にはより詳しい情報を素早く参照できるリンクがあります。