Docker とは

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

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

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

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

Docker-Logo_Horizontel_279x131

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

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

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

monolith_2-VM-vs-Containers

Docker をなぜ使うか

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

100x100_benefit_deployment1

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

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

100x100_benefit_tools

オペレーションの標準化

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

100x100_benefit_migration

シームレスに移動

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

100x100_benefit_lowcost-affordable

コスト削減

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

Docker をいつ使うか

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

100x100_benefit_ccontainers

マイクロサービス

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

100x100_benefit_delivery

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

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

AWS_Benefit Icon_AutomatedOperations

データ処理

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

100x100_benefit_get-started-2

Containers as a Service

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

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

Q: Docker ではどのようなことができますか?

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

Q: Docker イメージとは何ですか?

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

Q: Docker と仮想マシンはどう違いますか?

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

monolith_2-VM-vs-Containers

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 コンテナを使って高度にスケーラブルなバッチプロセスワークロードを実行できます。

new_product_ecs

Amazon ECS

Amazon ECS は AWS クラウドで Docker コンテナを実行するための高度にスケーラブルで、高パフォーマンスのコンテナオーケストレーションサービスです。

new_product_fargate

AWS Fargate

AWS Fargate は、インフラストラクチャのデプロイや管理をせずに Docker コンテナを実行できる Amazon ECS のテクノロジーです。

new_product_eks

Amazon EKS

Amazon EKS を使用すると、Kubernetes マスターのインストールや操作をせずに、AWS で Kubernetes を簡単に実行できます。 

new_product_ecr

Amazon ECR

Amazon ECR は、Docker コンテナイメージの保存と管理を容易にする高可用性でセキュアなプライベートコンテナレポジトリです。

new_product_batch

AWS Batch

AWS Batch は、開発者、科学者、エンジニアが、AWS でコンテナを使ってバッチ処理ジョブを簡単に、効率的に実行できるようにします。

new_product_ecs

AWS Copilot

AWS Copilot は、AWS でコンテナ化されたアプリケーションを起動して簡単に管理できるようにするコマンドラインインターフェースです。

コンテナの詳細はこちら

よくある質問ページにアクセスする
構築の準備はできましたか?
Docker コンテナをデプロイする
ご不明な点がおありですか?
お問い合わせ