Docker とは?
Dockerとは?
-
Dockerとは、コンテナ仮想化技術を利用して「アプリケーションやサーバ環境などをパッケージ化するツール」です。
Noteコンテナとは「アプリケーションとその依存関係を隔離した軽量な仮想環境」です。 各コンテナは他のコンテナとは分離され、共有リソースを最小限に抑えて動作します。
-
Dockerを利用すると、アプリケーションの実行依存関係を一つのコンテナにまとめて隔離された環境で実行できます。
Dockerの主なコンポーネント
Dockerイメージ
-
Dockerイメージとは、アプリケーション実行環境(OS、ソースコード、ライブラリ、設定ファイル、等)のスナップショットです。
Noteスナップショットとは、ある時点の状態の瞬間的なコピーのことを指します。 -
Dockerイメージは、Dockerコンテナの基でありコンテナが実行される際に利用されます。
-
Dockerイメージは、読み取り専用であり変更されることはありません。
-
Dockerイメージは、Dockerレジストリからダウンロードすることができます。また、Dockerfileを使ってイメージを自作することも可能です。
-
Dockerイメージは、バージョン管理ができ、異なるバージョンのイメージを作成できます。これにより、アプリケーションのアップデートやバグ修正を行うことが容易になります。
-
Dockerイメージは、Dockerレジストリにアップロードして他のユーザーと共有することが可能です。
Dockerレジストリ
-
Dockerレジストリとは、Dockerイメージを保存、管理、共有するためのリポジトリのことです。
Noteリポジトリとは、データを管理する倉庫みたいなもので変更履歴を管理することができます。 -
Dockerレジストリは、Dockerイメージの管理や共有に不可欠なツールであり、アプリケーションの配布にも利用されます。
-
Dockerレジストリは、公開されているパブリックものもあれば、プライベートなものもあります。
-
「Docker Hub」は Dokcer.Inc. が提供するパブリックなDockerレジストリです。
-
「Amaozon Elastic Container Registry(ECR)」は AWS(Amazon Web Service) が提供するプライベートなDockerレジストリで、 AWSのコンテナサービス(ECS:Amazon Elastic Container Service や EKS:Amazon Elastic Kubenetes Service など)と連携して利用可能です。
-
Dockerfile
-
Dockerfileは、Dockerイメージを構築するためのテキストファイルです。Dockerイメージを自作する場合に利用します。
-
Dockerfileには、ベースイメージの定義、ライブラリインストール、コマンド実行、などのDockerイメージを作成する手順を定義します。
- 以下は、単純なPythonアプリケーションをDockerイメージにするためのDockerfileの例です。
Dockerfileサンプル# ベースイメージの指定 FROM python:3.9 # 作業ディレクトリの指定 WORKDIR /app # ローカルのアプリケーションファイルをコンテナにコピー COPY app.py /app/ # コンテナ内で必要なライブラリのインストール RUN pip install flask # コンテナ起動時に実行するコマンド(python実行) CMD ["python", "app.py"]
-
Dockerfileを使うことで、Dockerイメージを一貫して再現可能な方法で作成することができます。
Dockerコンテナ
-
Dockerコンテナとは、Dockerイメージから生成された実行可能なインスタンスです。
-
Dockerコンテナは、アプリケーションとその依存関係、ライブラリ、設定などをまとめられた仮想環境であり、
Dockerが動作するホストOSから隔離された状態で動作します。- この隔離された環境により、コンテナ上のアプリケーションは他のコンテナやホストシステムに影響を与えずに実行できます。
Dockerエンジン
-
Dockerエンジンとは、Dockerのコアコンポーネントであり、コンテナ仮想化プラットフォームのエンジンとして機能します。
-
Dockerエンジンは、Dockerイメージの作成・管理・実行を可能にし、コンテナ化されたアプリケーションを実行するための基盤となります。
-
Dockerエンジンの主なコンポーネントは以下の通りです。
- Dockerデーモン(Docker Daemon)
- Dockerデーモンは、Docker Engineのバックエンドで動作するプロセスです。コンテナの管理や操作を受け付け、コンテナを実行します。
- Dockerデーモンは、Docker APIを通じてクライアントからの要求を受け付け、それに基づいてコンテナの操作やイメージの管理を行います。
- Docker CLI(コマンドラインインターフェース)
- Docker CLIは、コマンドラインからDocker Engineとやり取りするためのユーザーインターフェースです。
コマ ンドを使用してイメージのビルド、コンテナの起動、停止、削除などの操作を行います。
- Docker CLIは、コマンドラインからDocker Engineとやり取りするためのユーザーインターフェースです。
Dockerを利用することの利点
- Dockerを用いて環境を構築すれば、(Dockerが動作するOSであれば)OS問わず同一環境を簡単に複製することができます。
例えば、DockerでWindowsの開発環境を構築したとしても、Linuxの本番環境でも容易に複製できます(環境の再現性がある)。 - Dockerコンテナはコマンドを利用して複製することができるため簡単にスケールアップすることも可能です(スケーラビリティ)。
- VMwareやVirtualBoxなどで動作する仮想マシンに比べるとリソース消費が少ないです(軽量)。
コメント