Dockerとは何か?なぜエンジニアに必須なのか
Dockerはコンテナ技術を使って、アプリケーションとその実行環境をひとつのパッケージ(コンテナ)にまとめるプラットフォームです。「自分のPCでは動くのに本番では動かない」という問題を根本から解決し、開発・テスト・本番環境を統一できます。
2026年現在、DockerはほぼすべてのWeb開発・クラウド環境で標準的に使われており、エンジニアとして知らないと仕事にならないレベルの基礎知識になっています。
Dockerの仕組みを図解
Dockerは以下の3つのコンポーネントで構成されています。
- Docker Image(イメージ):アプリ+OS+ライブラリをパッケージ化した設計図
- Docker Container(コンテナ):イメージを実際に起動して動かしている実体
- Docker Registry:イメージを保存・配布する場所(Docker Hub・ECR等)
Dockerのインストール
Mac(Docker Desktop)
# Homebrew経由でインストール
brew install --cask docker
# インストール確認
docker --version
Ubuntu/Debian Linux
# パッケージ更新
sudo apt update
# 必要なパッケージをインストール
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# DockerのGPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# リポジトリを追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Dockerをインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# サービス起動
sudo systemctl start docker
sudo systemctl enable docker
Dockerの基本コマンド
# イメージを取得
docker pull nginx:latest
# コンテナを起動(バックグラウンド・ポートマッピング)
docker run -d -p 8080:80 --name my-nginx nginx:latest
# 起動中のコンテナ一覧
docker ps
# 全コンテナ(停止中含む)
docker ps -a
# コンテナの中に入る
docker exec -it my-nginx bash
# コンテナを停止
docker stop my-nginx
# コンテナを削除
docker rm my-nginx
# イメージを削除
docker rmi nginx:latest
# コンテナのログを確認
docker logs my-nginx
Dockerfile の書き方
Dockerfileは独自のDockerイメージを作成するための設計ファイルです。
# Python Webアプリの例
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Docker Compose で複数コンテナを管理
Docker Composeを使うと、アプリ+データベース+Redisなど複数コンテナを一括管理できます。
# docker-compose.yml の例
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
# 起動
docker compose up -d
# 停止
docker compose down
まとめ
Dockerは現代のエンジニアにとって必須のスキルです。まずdocker run・docker pull・docker composeの基本を習得し、次にDockerfileの書き方・マルチステージビルド・Kubernetesへのステップアップと学習を進めましょう。