「Docker、名前は聞くけどよく分からない」と悩んでいませんか?
現役WEBエンジニアとして、毎日Dockerを使っています。
この記事では、Docker初心者向けに基本を解説します。
目次
Dockerとは
簡単に言うと
- アプリの実行環境をパッケージ化
- どのPCでも同じ環境で動く
- 「私の環境では動く」問題を解決
仮想マシンとの違い
| 項目 | Docker | 仮想マシン |
|---|---|---|
| 起動速度 | 秒 | 分 |
| リソース | 軽い | 重い |
| 分離レベル | プロセス | OS |
インストール
Mac
# Homebrewでインストール
brew install --cask docker
# Docker Desktopを起動
Windows
- Docker Desktopをダウンロード
- インストーラーを実行
- WSL2を有効化
基本コマンド
イメージ操作
# イメージ一覧
docker images
# イメージ取得
docker pull nginx
# イメージ削除
docker rmi nginx
コンテナ操作
# コンテナ一覧(実行中)
docker ps
# コンテナ一覧(全て)
docker ps -a
# コンテナ起動
docker run -d -p 8080:80 nginx
# コンテナ停止
docker stop container_id
# コンテナ削除
docker rm container_id
よく使うオプション
| オプション | 意味 |
|---|---|
| -d | バックグラウンド実行 |
| -p | ポートマッピング |
| -v | ボリュームマウント |
| –name | コンテナ名指定 |
| -it | インタラクティブモード |
Dockerfile
基本構造
# ベースイメージ
FROM node:18
# 作業ディレクトリ
WORKDIR /app
# ファイルコピー
COPY package*.json ./
# コマンド実行
RUN npm install
# ファイルコピー
COPY . .
# ポート公開
EXPOSE 3000
# 起動コマンド
CMD ["npm", "start"]
ビルドと実行
# イメージビルド
docker build -t my-app .
# コンテナ起動
docker run -d -p 3000:3000 my-app
Docker Compose
docker-compose.yml例
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
Compose コマンド
# 起動
docker compose up -d
# 停止
docker compose down
# ログ確認
docker compose logs -f
# 再ビルド
docker compose up -d --build
よくあるトラブル
ポートが使用中
# 使用中のポート確認
lsof -i :8080
# プロセス終了
kill -9 PID
容量不足
# 不要なものを削除
docker system prune -a
まとめ
Docker入門のポイント:
- 基本コマンドを覚える
- Dockerfileを書けるように
- Docker Composeでマルチコンテナ
- 実際に使って慣れる
