🌟

Dockerとは

に公開

Dockerを調べる経緯

職場でローカル環境の構築はDockerを利用していました。
手順書通りに環境構築をしていたので、そもそもDockerってなんなのかということを調べてみました。

Dockerとは?

Dockerは、アプリを コンテナ という単位でまとめて実行できるソフトウェアです。
アプリケーションとその依存関係をパッケージ化したイメージを基に、独立した環境(コンテナ)で実行します。
・Docker Desktop
(https://www.docker.com/products/docker-desktop/)

Dockerを使うメリット

  • 開発環境を簡単に統一できる
  • 他のPCやクラウドにそのまま移行できる
  • 環境を壊さずに、すぐに作り直せる

Dockerの用途

  • 環境の再現
    →Node.jsアプリケーションを開発する場合、node:14 というDockerイメージを使って、開発者全員が同じNode.js環境で作業できます。
  • アプリケーションのパッケージ化
    →複数のイメージをインストールして必要なすべての依存関係を含んだ環境のイメージを作成し、それを配布して、どこでも同じ環境で実行できる
  • 複数の環境での動作
    →独立した環境だから同じマシン上で、異なるアプリケーションやバージョンを実行できる

VMと比較

どちらも「仮想化」という技術を使って、複数の独立した環境を同じ物理的なハードウェアで実行するので比較されることがあります

大きな特徴の差

VM:仮想化されたOSが必要
Docker:ホストOSのカーネルを使う
詳しい比較は以下

比較項目 コンテナ 仮想マシン(VM)
オーバーヘッド 低い 高い
起動時間 数秒 数分
リソース効率 高い 低い
OSの依存性 ホストOSのカーネルを共有 独自のOSが必要
隔離性 ホストOSとカーネルを共有しているため、VMより少し弱いが十分隔離可能 完全に隔離されている

Dockerを使ってアプリケーションを開発・デプロイする際の一般的な流れ

  1. Dockerのインストール
  2. イメージをインストール
    アプリケーションを動かすための基本的なDockerイメージをインストールします。
    Docker Hubなどのリポジトリから、例えばNode.jsやPython、MySQL、PostgreSQLなどの公式イメージを利用できます。
  3. アプリ作成
    必要なパッケージをインストールしたり、必要なコードファイルを作成します。
  4. 自分のアプリをDocker化
    アプリケーションをDockerで動かすために、Dockerfileを作成します。
    Dockerfileはアプリケーションの実行環境を定義するための設定ファイルです。
  5. 違うコンテナを作成する(2-4を繰り返す)
    アプリケーションがデータベースやキャッシュなどのサービスを必要とする場合、それぞれのサービスをDockerコンテナで作成します。
  6. Docker Composeで複数のコンテナを管理、コンテナ間の疎通もここで設定
    Docker Composeを使用して、複数のサービス(コンテナ)を同時に起動・管理するための設定を行います。
    docker-compose.ymlファイルを使って、サービス間の依存関係やネットワークを設定します。
    docker-compose.ymlファイルは数のコンテナをまとめて起動・管理するための設定ファイルです。
  7. クラウド環境へデプロイ
    7-1.Docker Hubにイメージをプッシュして、クラウド環境でそのイメージを引っ張ってくる。
    7-2.クラウドサービス(例えば、AWS、Azure、Google Cloud)にDockerコンテナを直接デプロイする。

まとめ

Dockerを使うと、開発環境を簡単に再現でき、依存関係や設定の違いによる問題を防げます。
アプリケーションをコンテナ化することで、環境間の差異が解消され、ローカルでも本番環境と同じ条件で動作させることが可能です。
また、開発チーム全員が一貫した環境で作業できるため、効率的でエラーの少ない開発が実現できます。

Discussion