Docker入門の決定版:開発環境を劇的に変える基本と使い方

インフラ

1. 導入:なぜ今、Dockerが必要なのか?

Web開発やシステム運用に携わる皆さんにとって、「環境構築」は常に悩みの種でした。

  • 「先輩のPCでは動くのに、自分の環境ではエラーが出る」
  • 「本番環境と開発環境でOSやライブラリのバージョンが違って動かない」

このような「環境依存によるトラブル」を根本的に解決するのが、今回紹介するDockerです。

この記事では、Dockerの基本的な仕組みから、イメージやコンテナといった重要な用語、そして実際の開発で役立つ基本コマンドまでを、初心者にも分かりやすく解説します。

2. Dockerとは何か? コンテナ技術の基礎知識

Dockerとは、コンテナ型仮想化技術を利用してアプリケーションとその実行環境全体を隔離・パッケージ化するためのプラットフォームです。

2.1. コンテナと仮想マシンの違い

従来、環境を隔離する方法として**仮想マシン(VM: Virtual Machine)**が使われてきましたが、Dockerのコンテナはこれとは異なります。

特徴コンテナ (Docker)仮想マシン (VM)
OSホストOSのカーネルを共有OS全体(ゲストOS)を持つ
起動速度非常に高速 (数秒)比較的遅い (数分)
リソース非常に軽量重い(CPU、メモリを多く消費)
用途アプリケーションの実行環境隔離OSレベルでの完全な隔離

コンテナはゲストOSを持たないため、非常に軽量で起動が速いのが特徴です。アプリケーションに必要なファイルと設定だけをパッケージ化するため、どこでも同じように動作します。

2.2. Dockerの主要な構成要素(3つの用語)

Dockerを理解するために、特に重要な以下の3つの用語を覚えましょう。

  • ① イメージ (Image):
    • コンテナを起動するための設計図テンプレートとなるファイルです。
    • アプリケーション本体、ライブラリ、OSの必要な設定など、実行に必要な全てが含まれています。
  • ② コンテナ (Container):
    • イメージを元に、実際に起動・実行された隔離された実行環境です。
    • アプリケーションが動作する実体であり、停止・起動・削除が容易に行えます。
  • ③ Dockerfile:
    • イメージを作成するための手順を記述したテキストファイルです。
    • 「どのOSをベースにするか」「どのファイルをコピーするか」「何をインストールするか」などを記述します。

3. Dockerの基本的な使い方とコマンド

Dockerの基本的なワークフローは、「Dockerfileでイメージを作り、そのイメージからコンテナを起動する」という流れです。

3.1. イメージの作成(docker build)

Dockerfileが置かれているディレクトリで実行します。

Bash

docker build -t [イメージ名]:[タグ名] .
# 例: docker build -t my-web-app:1.0 .
  • -t(tag)オプションでイメージに名前とバージョン(タグ)をつけます。
  • 最後の . は、Dockerfileの場所(カレントディレクトリ)を示します。

3.2. コンテナの起動(docker run)

作成したイメージからコンテナを起動し、アプリケーションを実行します。

Bash

docker run -d -p [ホストポート]:[コンテナポート] [イメージ名]
# 例: docker run -d -p 8080:80 my-web-app:1.0
  • -d:コンテナをバックグラウンドで起動します。
  • -p:ポートフォワーディングを設定します。(例:PCの8080番ポートへのアクセスを、コンテナ内の80番ポートに接続)

3.3. その他の基本操作

コマンド用途
docker ps実行中のコンテナ一覧を表示します。
docker stop [コンテナID]実行中のコンテナを停止します。
docker rm [コンテナID]停止したコンテナを削除します。
docker imagesローカルにあるイメージ一覧を表示します。
docker rmi [イメージID]イメージを削除します。

4. まとめ:Dockerで得られる恩恵

Dockerは、開発者の「環境構築の苦労」を解消し、より本質的な開発に集中できる環境を提供します。

  • 環境の統一: 開発者間、開発/テスト/本番環境間で、完全に同じ実行環境を提供します。
  • 再現性: Dockerfileさえあれば、いつでも誰でも同じ環境を再現できます。
  • 迅速なデプロイ: 開発したコンテナイメージは、どこでもすぐにデプロイして実行できます。

まずは簡単なWebアプリケーションをDocker化することから始めて、Dockerの便利さをぜひ体験してください。

コメント

タイトルとURLをコピーしました