Docker とは

Docker を使用すると、アプリケーションをすばやく構築、テスト、デプロイできます。

概要

Docker は、アプリケーションをすばやく構築、テスト、デプロイできるソフトウェアプラットフォームです。Docker は、コンテナと呼ばれる標準化されたユニットにソフトウェアをパッケージ化します。コンテナには、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なすべてのものが含まれています。Docker を使用すると、どのような環境にもアプリケーションをすばやくデプロイおよびスケールでき、コードを実行することができます。

Docker を AWS で運用することで、開発者や管理者は、どのような規模の分散アプリケーションでも、高信頼性と低価格を実現した方法ですばやくビルド、出荷、実行できます。

最近の発表: Docker は AWS と協力して、デベロッパーが最新のアプリをクラウドに迅速に配信できるように支援します。これにより、デベロッパーが現在ローカルで使用しているワークフローを使って、Amazon ECS と AWS Fargate にアプリケーションをシームレスにデプロイするために、Docker Compose と Docker Desktop を活用できるようになります。詳細については、ブログをお読みください。

どのようにして Docker が動作するか

Docker はコードに標準的な実行方法を提供します。Docker はコンテナに対するオペレーティングシステムです。仮想マシンがサーバーハードウェアを仮想化する (直接管理する必要をなくす) ように、コンテナはサーバーのオペレーティングシステムを仮想化します。Docker は各サーバーにインストールされ、シンプルなコマンドを使ってコンテナを構築、開始、停止できます。

AWS FargateAmazon ECSAmazon EKSAWS Batch などの AWS サービスはどのような規模でも Docker コンテナの実行と管理を容易にします。

どのようにして Docker が動作するか

Docker をなぜ使うか

Docker を使うとコードを早く出荷でき、アプリケーションの動作を標準化し、コードをシームレスに移動し、またリソースの利用を改善して費用を節約できます。Docker を使うと、どこでも確実に実行できる単一のオブジェクトを取得できます。Docker のシンタックスはシンプルで分かりやすく、完全なコントロールが得られます。広く使われていますので、Docker と組み合わせてすぐに使えるツールおよび既製のアプリケーションの、強力なエコシステムがあります。

ソフトウェア出荷の数と速度を向上

Docker ユーザーは、平均すると非 Docker ユーザーの 7 倍以上の頻度でソフトウェアを出荷しています。Docker は別れた複数のサービスを必要に応じて何度でも出荷できます。

オペレーションの標準化

コンテナ化された小さなアプリケーションでは、デプロイ、問題の特定、および解決のためのロールバックが容易になります。

シームレスに移動

Docker ベースのアプリケーションは、ローカル開発マシンから AWS の本番デプロイへとシームレスに移行させることが可能です。

コスト削減

Docker コンテナは各サーバーでより多くのコードを実行することが容易になり、リ利用率を上げ、お金を節約します。

Docker をいつ使うか

Docker コンテナは、最新のアプリケーションとプラットフォームを構築するためのコア構成要素として使用できます。Docker は分散型マイクロサービスアーキテクチャの構築と実行、標準化されて連続的な統合とデリバリーパイプラインのあるコードのデプロイメント、高度にスケーラブルなデータ処理システムの構築、開発者のための完全マネージド型のプラットフォームの作成を容易にします。最近の AWS と Docker との連携により、より簡単に Docker Compose のアーティファクトを Amazon ECS と AWS Fargate にデプロイできるようになりました。

マイクロサービス

Docker コンテナを用いた標準化されたコードデプロイメントを利用して、分散型のアプリケーションアーキテクチャを構築、スケーリングしてください。

継続的インテグレーションとデリバリー

環境を標準化し、言語スタック間およびバージョン間の競合を解消することで、アプリケーションのデリバリーを高速化します。

データ処理

ビッグデータ処理をサービスとして実現します。データと分析パッケージを、技術者以外のユーザーにも実行可能なようにポータブルなコンテナにパッケージ化します。

Containers as a Service

分散アプリケーションをビルドし、コンテンツおよび IT 管理された安全なインフラストラクチャとともに出荷します。

Docker についてのよくある質問

Docker を使用すると、どのような環境にもアプリケーションをすばやくデプロイおよびスケールでき、コードを実行することができます。これは、Docker がコンテナと呼ばれる標準化されたコンテナと呼ばれるユニットにソフトウェアをパッケージ化して、このコンテナには、ライブラリ、システムツール、コード、ランタイムなど、ソフトウェアの実行に必要なすべてのものが含まれているので可能になります。

Docker イメージとはコンテナを定義する読み取り専用のテンプレートです。イメージには、実行されるコードと、コードに必要なライブラリや依存関係の定義が含まれています。Docker コンテナはインスタンス化された (実行中の) Coker イメージです。AWS は Docker イメージを格納し、すばやく取り出すためのイメージレジストリである Amazon Elastic Container Registry (ECR) を提供しています。

仮想マシン (VM) はサーバーハードウェアを仮想化し (直接管理する必要をなくす)、コンテナはサーバーのオペレーティングシステムを仮想化します。Docker はコンテナに対するオペレーティングシステム (ランタイム) です。Docker エンジンはコンテナを実行しようとする各サーバーにインストールされ、コンテナを構築、開始、停止するために使えるシンプルなコマンドを提供します。

AWS での Docker の実行

AWS では、Docker のオープンソースソリューションと商用ソリューションの両方がサポートされています。AWS でコンテナを実行するにはいくつも方法があり、そのうち Amazon Elastic Container Service (ECS) は非常にスケーラブルで、高パフォーマンスのコンテナ管理サービスです。コンテナ化されたアプリケーションをローカルの Docker 環境から直接 Amazon ECS に簡単にデプロイできます。AWS Fargate は Amazon ECS 用のテクノロジーで、インフラストラクチャのデプロイや管理をせずにコンテナを商用で実行できます。Amazon Elastic Container Service for Kubernetes (EKS) は AWS での Kubernetes の実行を容易にします。AWS Fargate は、サーバーのプロビジョニングや管理をせずにコンテナを実行できる Amazon ECS のテクノロジーです。Amazon Elastic Container Registry (ECR) は Docker コンテナイメージの保存と管理を容易にする高可用性でセキュアなプライベートコンテナレポジトリで、保管時にイメージを暗号化して圧縮することで高速な取り出しとセキュリティを実現します。AWS Batch は、Docker コンテナを使って高度にスケーラブルなバッチプロセスワークロードを実行できるようにします。