Dockerは、ドッカーと読みます。仮想化技術を使用してアプリケーションの実行環境を構築するためのプラットフォームです。軽量で高速というところに特徴があり、1台のサーバ上で複数のOSを動かすことができます。物理サーバ上に複数の仮想サーバを構築することで複数を同時に動かす技術です。
Dockerは、コンテナ型仮想化技術で構築されています。すべてのアプリケーションがホストOSによって実行されるため、ゲストOSが不要です。構築する環境ごとにOSをインストールする必要がないことから、イメージが軽量という特徴があります。また、構築した環境はアプリケーションを含めた完全な実行環境をパッケージングしたもので、開発チームとの共有が簡単です。
従来の仮想化では、仮想マシンごとに1つのゲストOSをインストールして、1台の独立したサーバのように利用していました。Dockerでは、ホストOSのカーネルを共有して利用するため、ゲストOSを必要としません。その分、軽快に動作できるというのがDockerの従来の仮想化との相違点です。従来の仮想化では、仮想マシンはOSを起動する必要があるため、仮想マシンの作成から起動まで数分程度の時間がかかっていました。Dockerの仮想環境は、数秒で起動できます。
Dockerを使ってアプリケーションを動かすときは、Dockerをインストールして、イメージを取得。Dockerコンテナを作成し、アプリケーションを実行するという手順となります。
Dockerには、全体を操作するコアとなるDockerエンジンがあります。DockerイメージやDockerコンテナの作成等の操作を行うものです。Dockerエンジンは、クライアント・サーバ型の構造になっており、クライアントがサーバに何かしらの要求をすることでサーバがそれに応答する仕組みです。Dockerエンジンは、DockerクライアントがサーバであるDockerデーモンに対してDockerイメージやDockerコンテナの作成を要求してコマンドを発行します。Dockerコンテナはその要求を受け付けて他のDocker機能に命令を出すという仕組みです。
Dockerイメージは、コンテナの設計図です。取得したイメージはDockerホスト内に保存されます。一度取得したイメージはキャッシュから取得できるため、素早く起動することができるのです。
Dockerイメージを基に作成される仮想環境をDockerコンテナといいます。各コンテナは互いに独立しており、ホストOSでコンテナを共有していることが特徴です。
Dockerのメリットのひとつは、アプリケーションの実行が高速であることです。ゲストOSが不要でホストOS上で直接動作するため、ホストOSとゲストOS間でのやりとりが発生しません。その分、アプリケーションの動作が高速です。
また、コンテナですべての環境をまとめて管理しているため、共有が簡単です。Dockerイメージを保存して開発チームに配布できます。配布先のPCでも同じように動作させることができます。
Dockerコミュニティが活発なこともメリットのひとつ。Docker Hubを覗くと、さまざまなDockerイメージが共有されています。共有されたDockerイメージを使用することで、即座に開発環境を構築できます。
Dockerは簡単に環境構築できますが、Dockerそのものを理解せずに使用すると、不具合があったときに対応できません。トラブル対応できるようにするには、学習が必要です。また、ホストOSに未対応のアプリケーションでは起動できないというデメリットもあります。
Linuxの各種ディストリビューション、Windows、Macなどで利用可能です。たとえば、Ubuntu22.04にDockerをインストール場合は、パッケージリストを更新し、必要なパッケージをインストールします。公式のGPGキーを保存するためのディレクトリを作成し、公式URLからGPGキーを取得。公式のDockerリポジトリを追加します。その後、再度パッケージリストを更新してインストールするという手順です。