Dockerについて
Dockerとは
Dockerは、アプリケーションを「コンテナ」と呼ばれる軽量な実行環境で動かすためのコンテナ型仮想化プラットフォームです。 OSごと仮想化する従来のVMとは異なり、ホストOSのカーネルを共有しながら、プロセス単位で隔離します。
なぜDockerを使うのか
-
「自分の環境では動くのに」の解消:
- ライブラリのバージョンやOSの設定をコンテナにパッケージ化できるため、開発者のMacでも、チームメンバーのUbuntuでも、本番のクラウド環境でも全く同じように動作します。
-
環境構築の自動化:
- Dockerfile という設定ファイルを書くだけで、複雑なミドルウェアのインストール作業を自動化・コード化(Infrastructure as Code)できます。
-
リソースの有効活用:
- 1台のサーバー上で、Java 17のアプリとJava 21のアプリを、お互いに干渉することなく同時に動かすことが容易です。
3つの重要な要素
| 要素 | 説明 | 例え |
|---|---|---|
| Dockerfile | コンテナの作り方を書いたテキストファイル | 料理のレシピ |
| Docker Image | アプリの実行に必要なものを全て固めたもの | 冷凍食品(中身が固定された状態) |
| Docker Container | イメージを元に実際に動き出した環境 | 調理して食べられる状態の料理 |
エンジニアとして押さえておきたいキーワード
-
Docker Hub: 世界中の人が公開しているイメージ(Java, DB, OSなど)が置かれている場所。
-
マルチステージビルド: Dockerイメージのサイズを小さくするために、ビルド用と実行用のステージを分けるテクニック。
-
ボリューム(Volume): コンテナを削除してもデータ(DBのデータなど)が消えないように、ホスト側にデータを永続化する仕組み。