Docker とは?

コンテナ仮想化技術を利用して各種環境をパッケージ化するツール
2023-08-20
ヒーローイメージ

目次
  1. Dockerとは?
  2. Dockerの主なコンポーネント
  3. Dockerを利用することの利点
  4. Docker関連ページ
  5. 参考情報

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レジストリです。

      Docker Hub
    • Amaozon Elastic Container Registry(ECR)」は AWS(Amazon Web Service) が提供するプライベートなDockerレジストリで、 AWSのコンテナサービス(ECS:Amazon Elastic Container Service や EKS:Amazon Elastic Kubenetes Service など)と連携して利用可能です。

      Amaozon Elastic Container Registry(ECR)

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を利用することの利点

  • Dockerを用いて環境を構築すれば、(Dockerが動作するOSであれば)OS問わず同一環境を簡単に複製することができます。
    例えば、DockerでWindowsの開発環境を構築したとしても、Linuxの本番環境でも容易に複製できます(環境の再現性がある)。
  • Dockerコンテナはコマンドを利用して複製することができるため簡単にスケールアップすることも可能です(スケーラビリティ)。
  • VMwareやVirtualBoxなどで動作する仮想マシンに比べるとリソース消費が少ないです(軽量)。

Docker関連ページ

Docker インストール手順
Dockerはコンテナ仮想化技術を利用して各種環境をパッケージ化するツールです。ここではOS毎(Windows、Mac、Linux)にはDockerをインストールする方法について解説します。
palette-code.com
リンクカード
Docker 基本コマンド操作
Dockerイメージ/コンテナの基本操作(取得・作成・削除、起動・停止)を中心に最低限覚えておいておくべきコマンド11つを実例を踏まえて解説します。
palette-code.com
リンクカード
Dockfile イメージビルド
Dockerfileを用いてDockerイメージビルド(イメージを作成)する方法やDockerfileに記載する各命令文について解説します。
palette-code.com
リンクカード

参考情報

Docker: Accelerated Container Application Development
Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.
www.docker.com
リンクカード
Docker Hub Container Image Library | App Containerization
Docker Hub is the world's largest library and community for container images. Browse over 100,000 container images from software vendors, open-source ...
hub.docker.com
リンクカード

コメント


Palette Codeなるべく丁寧にプログラミング関連技術を解説するサイト