Dockerを使用する際に注意すべき点

Dockerを使用する際に注意すべき点

公式ベースイメージを使用してアプリケーションをビルドする

アプリケーションを構築する際に、オペレーティング システム全体を最初からインストールするモードを使用しないでください。たとえば、node 環境を使用する場合は、centos または ubuntu イメージを使用するのではなく、node イメージを直接使用して、node 環境を自分でインストールする必要があります。

画像のバージョンを指定する

使用するバージョンを指定しない場合は、デフォルトで最新バージョンが使用されます。これにより、ビルドするたびに以前のバージョンとの不整合が発生する可能性があります。そのため、解決策としては、毎回ビルドするバージョンが統一されるように、指定されたバージョンを使用するということになります。

最小化されたオペレーティングシステムを使用する

CentOS や Ubuntu など、Linux オペレーティング システムには多くのバージョンがありますが、これらはアプリケーションには大きすぎて肥大化しているため、Alpine などの小規模なシステムを使用することをお勧めします。

画像レイヤーキャッシュを最適化する

Dockerfile にある各コマンドは新しいレイヤーを作成します。各レイヤーには、コマンドが実行される前と実行された後の状態のイメージに対するファイル システムの変更が含まれています。

RUN コマンドを使用すると、Docker イメージ内でコマンドを実行できます。 RUN コマンドによって生成されたレイヤーがすでにキャッシュ内に存在する場合、RUN コマンドは 1 回しか実行できません。

Dockerfile 内の COPY コマンドを使用すると、1 つ以上の外部ファイルを Docker イメージにインポートできます。これらの COPY コマンドを実行すると、依存するすべての外部ファイルの最新バージョンが確保されます。

最初の COPY コマンドのすべての外部ファイルの内容が同一の場合、レイヤー キャッシュが使用され、次の ADD または COPY コマンドまでのすべての後続コマンドはレイヤー キャッシュを使用します。

ただし、1 つ以上の外部ファイルの内容が異なる場合、後続のすべてのコマンドはレイヤー キャッシュを使用せずに実行されます。

Docker のレイヤー キャッシュを活用するには、頻繁に変更されるステップ (COPY など) が Dockerfile の末尾近くになるように Dockerfile を構成する必要があります。これにより、同じ操作の実行に関連する手順が不必要に再構築されなくなります。

.dockerignore ファイルの使い方を学ぶ

.dockerignore を使用すると多くの利点があります。 Docker イメージのサイズを縮小し、Docker ビルドを高速化し、パスワードの偶発的な漏洩を防ぐのに役立ちます。

Docker は、Docker クライアントと Docker サーバー (Docker デーモンとも呼ばれます) で構成されるクライアント サーバー アプリケーションです。 Docker クライアントのコマンドライン ツールは Docker サーバーと通信し、処理を要求します。その 1 つは Docker ビルドです。新しい Docker イメージをビルドします。 Docker サーバーは、クライアントと同じマシン上、または仮想マシン内、ローカル、リモート、クラウドで実行できます。

新しい Docker イメージを作成するには、Docker サーバーが Docker イメージの作成元となるファイルにアクセスできる必要があります。したがって、何らかの方法でこれらのファイルを Docker サーバーに送信する必要があります (Docker サーバーは別のリモート マシンになる可能性があることを覚えておいてください)。これらのファイルは Docker ビルド コンテキストです。 Docker クライアントは、すべてのビルド コンテキスト ファイルを tar アーカイブにパッケージ化し、このアーカイブを Docker サーバーにアップロードします。デフォルトでは、クライアントは現在の作業ディレクトリ内のすべてのファイル (およびフォルダー) を取得し、それらをビルド コンテキストとして使用します。

.dockerignore ファイルは、実際に必要な Docker ビルド コンテキストを定義するのに役立つツールです。このファイルを使用すると、ファイルとフォルダーに対して無視するルールとこれらのルールの例外を指定できます。これらのルールはビルド コンテキストに含まれず、アーカイブにパッケージ化されず、Docker サーバーにアップロードされません。

マルチステップビルドツールを使用して、さまざまな環境でビルドおよび実行します。

マルチステージビルドでは、Dockerfile 内で複数の FROM ステートメントを使用できます。各 FROM 命令は異なるベースイメージを使用でき、それぞれがビルドの新しいステージを開始します。あるステージから別のステージにファイルを選択的にコピーし、不要なものはすべて残しておくことができます。

最小権限ユーザーを使用する

Dockerfile で USER が指定されていない場合、Docker はデフォルトでコンテナをスーパーユーザー root として実行します。コンテナが属する名前空間、つまりイメージはルート ユーザーが所有します。つまり、コンテナは Docker ホスト システムのスーパー管理権限を取得できます。それだけでなく、コンテナをルートユーザーとして実行すると、攻撃対象領域も拡大します。コンテナ アプリケーションにセキュリティ上の脆弱性がある場合、権限昇格が発生しやすくなります。

実際には、コンテナにルート権限を与える必要は通常ありません。セキュリティの脅威を最小限に抑えるには、専用のユーザーとユーザー グループを作成し、USER を使用して Dockerfile でユーザーを指定し、コンテナー アプリケーションが最小限の権限を持つユーザーとして実行されるようにします。

ベースイメージに専用ユーザーが含まれていない場合は、Dockerfile で直接通常のユーザーを作成します。

画像をスキャンしてセキュリティ上の問題がないか確認する

Docker ローカル イメージの脆弱性スキャンにより、開発者と開発チームはコンテナ イメージのセキュリティ状態を確認し、スキャン中に見つかった問題を修正する手順を実行できるため、より安全なデプロイメントが可能になります。 Docker Scan は Snyk Engine 上で実行され、ユーザーにローカル Dockerfile とローカル イメージのセキュリティ体制の可視性を提供します。

ユーザーは CLI を通じて脆弱性スキャンをトリガーし、CLI を使用してスキャン結果を表示します。スキャン結果には、共通脆弱性識別子 (CVE)、そのソース (OS パッケージやライブラリなど)、導入されたバージョン、検出された CVE を修正するための推奨修正バージョン (利用可能な場合) のリストが含まれます。

通常、イメージ スキャンは、コンテナー イメージ ファイルで定義されているパッケージまたはその他の依存関係を解析し、それらのパッケージまたは依存関係に既知の脆弱性がないかチェックすることによって機能します。


<<:  Gラインクラウドコンピューティングシリーズ:フルスタッククラウド運用

>>:  Google Cloud Games はパフォーマンスが低いため優先順位が下がった

推薦する

ファーウェイは杭州Yunqiカンファレンスに出席する。これは問題を引き起こすでしょうか?

ジャック・マー氏が明るい黄色のTシャツを着て、雲斉鎮のDAMOアカデミーの科学者たちと写真を撮ってい...

トランザクションの原子性を実現するにはどうすればよいでしょうか? PolarDBの原子性に関する詳細な分析

[[403494]] 1. はじめに巨大なデータベース システムでは、クエリ オプティマイザーとトラ...

ウェブサイトのページ分析: ウェブタグのデザインに関する2、3の事柄

最近のユーザー検索ログでは、多くのユーザーが当社が設計したタグを使用せず、外部の検索エンジンを使用し...

インタビュアー: どのような分散 ID 生成スキームをご存知ですか?

過去 2 年間の技術面接では、分散トランザクション、分散ロック、分散スケジューリング、分散ストレージ...

大規模で高並列なIOの課題 アリババクラウドダブル11ショッピングフェスティバルでは1,000万コアのコンピューティング能力が必要

11月12日午前0時、第10回天猫双11カーニバルは2135億の新記録で終了した。ダブル11は世界的...

incrediblevps-6.5 ユーロ/kvm/4g メモリ/50g ハードディスク/2T トラフィック/US VPS

incrediblevps は 2017 年に設立された新しい VPS ブランドで、KVM 仮想化、...

レポート: サーバーレスは多くのソフトウェアスタックの重要な部分となっている

Datadog は、クラウドネイティブのスタートアップから大企業まで、あらゆる規模の組織でサーバーレ...

#クリスマス# profitserver: シンガポール VPS、オーストラリア VPS、50% オフ プロモーション、無制限トラフィック

profitserver は現在、世界中の 15 のデータセンターで VPS および専用サーバー サ...

ウェブマスターネットワークニュース:最初のWeibo事件は収束し、C2Cモデルは消滅した。

1. Taobao のビジネスのほとんどは B2C によるものです。C2C モデルは死にました。Ta...

プロモーション チャネルは数多くありますが、トラフィックを最大化するにはどのように組み合わせればよいでしょうか。

現在、モバイルアプリの総ユーザー数は10億人を超え、ユーザー数と使用期間の伸びは鈍化しています。つま...

Zookeeper を簡単に説明する (パート 2) Zookeeper に基づく分散ロックとリーダー選出

1. Zookeeperの機能1. Zookeeperノードタイプ上記の「Zookeeper アーキ...

VMware が IT チームの負担を軽減し、従業員のエクスペリエンスを向上させる新しい Anywhere Workspace 機能を発表

今日のハイブリッドな作業環境において、IT チームはさまざまな新たな課題に取り組んでいます。従業員は...

楊万偉:企業はどうすれば百科事典のプロモーションを迅速に実行できるのでしょうか?

「百科」とは、インターネット上のオープンで無料のオンライン百科事典を指し、さまざまな分野の知識を網羅...

アリババクラウドは、ガートナーのグローバルクラウドデータベースリーダーズクアドラントに3年連続でランクインしました。

最近、国際的な市場調査機関であるガートナーが「2022 年グローバル クラウド データベース管理シス...

Baidu が Taobao Affiliate を放棄したのには理由があります。Taobao Affiliate が生き残るにはどうすればよいかを考えてみましょう。

6月末のBaiduの大規模アップデートの洗礼の後、Taobaoの顧客の一人として、私は幸運にもBai...