コンテナは仮想化技術の一種で、主にアプリケーションの実行環境の仮想化に用いられています。たとえば、Webアプリケーションサーバーを複数動作させる目的などに向いている仮想化技術です。
原理としては、OSカーネル上で動作しているプロセスを隔離し、個別にファイルシステムを持たせる事で各コンテナが別々のシステムとして動作しているように見せかけます。ファイルシステムはコンテナイメージとして用意され、コンテナ実行時にマウントされます。コンテナイメージは読み取り専用で扱われるので、コンテナを起動する毎にクリーンな状態で動作します。異なる構成のコンテナイメージを用意できるので、用途別のコンテナを実行したり、バージョンアップした環境を簡単に用意することができます。
このようなコンテナの特性を活かして、ソフトウェアの開発、テスト、本番のシステム構成を揃えることができます。DevOpsの重要な要素であるCI/CDを行うのに適した環境を構築できるため、コンテナを活用するケースが増えてきています。
沢山のコンテナを動作させるためにはオーケストレーションツールと呼ばれる管理ツールが必要となりますが、Kubernetes(K8s)がよく用いられています。