コンテナが企業の IT インフラストラクチャに欠かせない要素となっていることは間違いありません。コンテナには次のような多くの利点があります。
しかし、多くのユーザーは依然としてコンテナを一般的な仮想マシンのように扱い、コンテナには使い捨てであるという重要な特性があることを忘れています。 この特性により、ユーザーはコンテナの取り扱いと管理方法に関する視点を変える必要に迫られます。では、コンテナを最良の状態に保つにはどうすればよいでしょうか? Docker コンテナで避けるべき 10 のことを紹介します。 1. コンテナにデータを保存しない コンテナを停止、破壊、または交換できるためです。コンテナ内で実行されているアプリケーションのバージョン 1.0 は、影響やデータ損失なしに、バージョン 1.1 に簡単に置き換えられる必要があります。したがって、データを保存する必要がある場合は、バッチで保存します。この場合、2 つのコンテナーが同じボリュームにデータを書き込むと破損する可能性があるため、注意が必要です。アプリケーションが共有データ ストアに書き込むように設計されていることを確認してください。 2. アプリケーションを2部に分けて提出しない コンテナを仮想マシンのように考える人もいますが、ほとんどの人は、実行中の既存のコンテナにアプリケーションをデプロイする必要があると考えがちです。開発フェーズでは、継続的にデプロイとデバッグを行う必要があります。これは当然のことです。ただし、QA および本番環境向けの継続的デリバリー (CD) パイプラインの場合、アプリケーションはイメージの一部である必要があります。 3. 大きな画像を作成しない 大きな画像は配布しにくいからです。アプリケーション/プロセスを実行するために必要なファイルとライブラリのみがあることを確認してください。不要なパッケージをインストールしたり、多くのファイルを新しいイメージ レイヤーにダウンロードする「更新」を実行したりしないでください。 4. 単層画像を使用しない 階層化ファイル システムを効果的に活用するには、オペレーティング システム用の独自のベース イメージ レイヤー、ユーザー名定義用の別のレイヤー、ランタイム インストール用の別のレイヤー、構成用の別のレイヤー、最後にアプリケーション用の別のレイヤーを常に作成します。画像の再作成、管理、配布が容易になります。 5. 実行中のコンテナからイメージを作成しない つまり、イメージを作成するために「docker commit」を使用しないでください。この画像作成方法は再現不可能なので、完全に避けるべきです。常に完全に再現可能な Dockerfile またはその他の S2I (ソースからイメージ) アプローチを使用してください。Dockerfile をソース管理リポジトリ (git) に保存すると、Dockerfile への変更を追跡できます。 6. 「最新」タグだけを使うのはやめましょう Maven ユーザーにとって、最新のタグは「スナップショット」のようなものです。コンテナの階層化ファイルシステムの性質上、タグの使用が推奨されます。数か月後にイメージをビルドし、親レイヤー (Dockerfile の FROM) が下位互換性のない、またはバグのある新しいバージョンに置き換えられ、ビルド キャッシュから「最新」バージョンが取得されたためにアプリケーションが実行されないことがわかっても、驚くことはありません。また、コンテナを本番環境にデプロイするときには、「最新」タグの使用を避ける必要があります。そうしないと、実行しているイメージのバージョンがわからなくなってしまいます。 7. 単一のコンテナ内で複数のプロセスを実行しないでください。 コンテナは単一のプロセス (http デーモン、アプリケーション サーバー、データベース) を実行するのに最適ですが、複数のプロセスがある場合は、プロセスを個別に管理、ログを取得、更新するのが難しくなる可能性があります。 8. 資格情報を画像に保存しないでください。 環境変数を使用してください。イメージ内にユーザー名やパスワードをハードコードしないでください。環境変数を使用して、コンテナ外部からその情報を取得します。この原則の良い例は、Postgres ミラーリングです。 9. プロセスをルートとして実行しない 「デフォルトでは、Docker コンテナはルート ユーザーとして実行されます。Docker が成熟するにつれて、より安全なデフォルトが提供される場合があります。現在、ルート ユーザーを要求することは他のユーザーにとって危険であり、すべての環境で利用できるとは限りません。イメージでは、USER ディレクティブを使用して、コンテナを実行するための非ルート ユーザーを指定する必要があります。 10. IPアドレスに頼らない 各コンテナには独自の内部 IP アドレスがあり、コンテナを起動および停止すると変更される可能性があります。アプリケーションまたはマイクロサービスが別のコンテナと通信する必要がある場合は、環境変数を使用して、正しいホスト名とポートをあるコンテナから別のコンテナに渡します。 上記は、Docker コンテナのアプリケーションにおける 10 の悪い習慣の詳細です。Docker コンテナのアプリケーションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: vue+openlayer をベースにマップの集約と散乱効果を実現
この記事では、例を使用して、MySQL レプリケーションの原理と実際のアプリケーションについて説明し...
多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...
今日は、CSS3 の transition-delay 属性のデフォルト値 0 に単位がないのは無効...
この記事の例では、検証コードを作成して取得するためのjsキャンバスの具体的なコードを共有しています。...
くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...
WeChatアプレットでタブバーを設定すると、重要なコンテンツがブロックされ、iPhoneXなどの異...
目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...
1. CSS背景タグ1.背景色を設定するbackground-ground-color プロパティは...
属性値の正規一致セレクターには 3 つの種類があります。 [属性^="値"] [...
開発においては、一覧から詳細ページにジャンプし、また詳細ページに戻る際に一覧ページの状態(スクロール...
目次プロジェクトにおける一般的な支払い方法Alipay決済微信ペイプロジェクトにおける一般的な支払い...
コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...
脆弱性の説明Apache Flink は、分散ストリームおよびバッチ データ処理用のオープン ソース...
数日前、CSS を使用して三角形の矢印を実装する方法について記事を書きました。 目的の効果は達成され...
この記事では、ディスクを追加または拡張して、Vmare で有効にする方法について説明します。シナリオ...