Docker
Dockerコンテナはアプリケーションとその実行環境を組み合わせた一体のものとして利用できる(containerized application, Container Deployed Applications)。
Dockerイメージはファイルシステムと実行時設定を併せたものである(参考: Open Container Initiative#OCI Image)。アプリケーションおよび実行に必要なソフトウェアさらに実行時の設定が含まれているDockerイメージを基にしてコンテナを生成すると、コンテナを起動すれば直ちにアプリケーションとして機能する。このことからDockerコンテナはすべてのDocker環境上でそのまま動作するアプリケーションとして配布ができる。
Dockerイメージは配布することができ、かつ環境によらずに機能する可搬性を持つため、アプリケーションをDockerコンテナとして作成すれば、テスト・ステージング・本番のそれぞれの環境に依らない頒布が容易におこなえる。
DockerではDockerfileからコンテナイメージを生成できる。
DockerではDocker imageがインスタンス化されコンテナとして動作する。imageの実体はJSONファイルおよびファイルシステムの.tarであり(c.f. OCI Image) 手動で記述・生成できる。DockerはDockerfileと呼ばれる設定ファイルからコンテナイメージファイルを作成(build)する機能を提供している。
Dockerがもたらす環境/アプリケーション展開の効率化は開発から運用まで幅広い領域に大きな影響を与えている。
Dockerイメージ生成による環境生成はOS・ミドルウェアレベルのInfrastructure as Code(IaC)であり、高速/低負荷なコンテナ生成/破棄は実利用可能なImmutable Infrastructureとみなせる。これら高効率な環境展開はテスト・ビルド等の継続的インテグレーション(CI)・サービス提供まで含む継続的デプロイ(CD)をより容易にした。クラウドコンピューティングサービスがDockerコンテナ実行マネージドサービスを提供し始めたことで、開発者はローカルに作成したDockerイメージをクラウド上へホストを意識せず展開可能になった。生成/破棄が容易なコンテナをホストを意識せず利用できるマネージドサービスでデプロイすることで、アプリケーション運用者は展開コンテナ数調整による容易かつ柔軟なアプリケーションのスケーリングが可能になった。