昨今、コンテナ技術が主流になって来ていますが、使用したことがないため、担当として任された際に対応できるよう、見識を深めたいと思います。
コンテナとは、アプリケーションを実行するために必要な環境をひとまとめにして扱う仕組みです。通常、ソフトウェアを動かすにはOSやライブラリ、設定ファイルなどが揃っている必要がありますが、これらは開発環境や本番環境によって微妙に違うことが多く、その違いが原因で「自分の環境では動くのに他では動かない」といった問題がよく起こります。コンテナはこの問題を解決するために、アプリとその実行環境を一体化してパッケージ化し、どこでも同じ状態で動かせるようにします。
設定ファイルに、どのOSを使い、どんなライブラリを入れ、どのようにアプリを動かすかを書きます。その指示をもとに「イメージ」と呼ばれる実行可能なテンプレートを作り、それを起動することでコンテナとしてアプリが動きます。こうして作られたコンテナは、ローカル環境でもクラウドでも同じように再現できるため、開発と運用の差を大きく減らせます。
実際のサービス運用では、複数のコンテナを同時に動かし、負荷に応じて増減させたり、障害が起きたときに自動で復旧させたりする必要があります。したがって、コンテナ技術は、アプリの実行環境を統一する、それを大規模に管理する、そしてクラウドで簡単に使えるようにするという形で役割が分かれています。