🌟
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を使ってアプリケーションを開発・デプロイする際の一般的な流れ
- Dockerのインストール
- イメージをインストール
アプリケーションを動かすための基本的なDockerイメージをインストールします。
Docker Hubなどのリポジトリから、例えばNode.jsやPython、MySQL、PostgreSQLなどの公式イメージを利用できます。 - アプリ作成
必要なパッケージをインストールしたり、必要なコードファイルを作成します。 - 自分のアプリをDocker化
アプリケーションをDockerで動かすために、Dockerfileを作成します。
Dockerfileはアプリケーションの実行環境を定義するための設定ファイルです。 - 違うコンテナを作成する(2-4を繰り返す)
アプリケーションがデータベースやキャッシュなどのサービスを必要とする場合、それぞれのサービスをDockerコンテナで作成します。 - Docker Composeで複数のコンテナを管理、コンテナ間の疎通もここで設定
Docker Composeを使用して、複数のサービス(コンテナ)を同時に起動・管理するための設定を行います。
docker-compose.ymlファイルを使って、サービス間の依存関係やネットワークを設定します。
docker-compose.ymlファイルは数のコンテナをまとめて起動・管理するための設定ファイルです。 - クラウド環境へデプロイ
7-1.Docker Hubにイメージをプッシュして、クラウド環境でそのイメージを引っ張ってくる。
7-2.クラウドサービス(例えば、AWS、Azure、Google Cloud)にDockerコンテナを直接デプロイする。
まとめ
Dockerを使うと、開発環境を簡単に再現でき、依存関係や設定の違いによる問題を防げます。
アプリケーションをコンテナ化することで、環境間の差異が解消され、ローカルでも本番環境と同じ条件で動作させることが可能です。
また、開発チーム全員が一貫した環境で作業できるため、効率的でエラーの少ない開発が実現できます。
Discussion