🐳

【Dcoker】Docker, Dockerfile, Docker Compose, Kubernetesの簡潔なまとめ

2025/02/13に公開

Docker関連の情報を整理します。

1. Docker

  • 概要:
    環境を「コンテナ」という単位でパッケージ化し、環境依存性を解消するためのプラットフォーム
  • 役割:
    • 一貫性の提供: 開発、テスト、本番環境で同じコンテナを利用することで、環境間の差異をなくすことができる。
    • グローバル環境保護: グローバル環境をクリーンに保ち、干渉を防ぐ。

2. Dockerfile

  • 概要:
    Dockerイメージをビルドするための命令を記述するテキストファイル
  • 役割:
    • 環境構築の自動化: 必要なソフトや手順を自動で実行する
    • 再現性: 一度定義したDockerfileからは常に同じイメージが生成されるため、開発環境の再現性が高まる。
  • 基本的な命令例:
    • FROM: ベースとなるイメージを指定
    • RUN: コマンドを実行し、ソフトウェアのインストールや設定を行う
    • COPY/ADD: ファイルやディレクトリをイメージ内にコピー
    • CMD/ENTRYPOINT: コンテナ起動時に実行するコマンドを定義

3. Docker Compose

  • 概要:
    複数のコンテナで構成されるアプリを一括管理するためのツール
  • 役割:
    • マルチコンテナアプリの定義: docker-compose.yml というYAML形式のファイルで、どのコンテナをどのように連携させるかを定義する。
    • 簡単な起動: docker-compose up コマンド一つで、関連する複数のコンテナを同時に起動・停止できる。Dockerfileを利用したDockerコンテナの立ち上げの自動化も可能。
  • 利用例:
    Webアプリで、Webサーバ、DB、キャッシュサーバなど複数のサービスが必要な場合、これらを一つのYAMLファイルにまとめて管理することで開発効率が向上する。

4. Kubernetes

  • 概要:
    コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するツール
  • 特徴:
    • 大規模な運用に最適: クラスタ内の複数のノードにまたがってコンテナを分散し、高い可用性とスケーラビリティを実現する。
    • セルフヒーリング機能: 障害が発生したコンテナを自動で再起動・再配置するなど、システム全体の健全性を保つ。
    • 宣言的な構成管理: YAMLファイルでアプリケーションの状態を定義し、その状態に自動で合わせる仕組み(リコンシリエーション)を採用。
  • 基本コンポーネント:
    • Pod: 一つまたは複数のコンテナの最小単位
    • Service: Pod群へのネットワークアクセスを提供する抽象レイヤー
    • Deployment: アプリケーションの望ましい状態を定義し、Podの数や更新を管理する仕組み

まとめ

  • Docker: コンテナ環境を提供するプラットフォーム。
  • Dockerfile: 作成したいコンテナの詳細設定や環境構築手順を記述するファイル。
  • Docker Compose: コンテナ立ち上げの自動化、複数のコンテナからなるシステムの管理。
  • Kubernetes: コンテナを大規模に運用するためツール。デプロイからスケーリング、自己修復までを自動化。

Discussion