Docker チートシート

エンジニアのための実践リファレンス

Dockerとは?

Dockerはコンテナ型仮想化技術を用いたアプリケーション開発・実行環境です。軽量で移植性に優れ、依存関係を含めた環境をコード化できます。開発環境と本番環境の差異をなくし、チーム開発やCI/CDを効率化します。

コンテナ仮想化 DevOps マイクロサービス

イメージ操作

イメージのダウンロード

# 最新版を取得
docker pull ubuntu

# タグ指定で取得
docker pull ubuntu:22.04

ローカルイメージ一覧

# イメージ一覧
docker images

# イメージIDのみ表示
docker images -q

Dockerfileからイメージ作成

# カレントディレクトリのDockerfileでビルド
docker build -t myapp:latest .

# Dockerfile名指定
docker build -f Dockerfile.dev -t myapp:dev .

イメージの削除

# イメージIDで削除
docker rmi IMAGE_ID

# 未使用イメージをまとめて削除
docker image prune

コンテナ操作

コンテナの起動

# バックグラウンド起動
docker run -d --name mycontainer nginx

# ポートマッピング
docker run -d -p 8080:80 nginx

# インタラクティブモード(シェル起動)
docker run -it ubuntu bash

コンテナ一覧

# 実行中のコンテナ
docker ps

# すべてのコンテナ(停止中含む)
docker ps -a

コンテナの停止・再起動

# 停止
docker stop CONTAINER_ID

# 再起動
docker restart CONTAINER_ID

# 一時停止/再開
docker pause CONTAINER_ID
docker unpause CONTAINER_ID

コンテナの削除

# コンテナ削除
docker rm CONTAINER_ID

# 強制削除
docker rm -f CONTAINER_ID

# 停止中のコンテナをまとめて削除
docker container prune

コンテナ内部操作

コマンド実行

# コンテナ内でコマンド実行
docker exec CONTAINER_ID ls -la

# インタラクティブシェル起動
docker exec -it CONTAINER_ID bash

ログ確認

# ログ表示
docker logs CONTAINER_ID

# リアルタイムログ
docker logs -f CONTAINER_ID

ファイルコピー

# ホスト → コンテナ
docker cp file.txt CONTAINER_ID:/path/

# コンテナ → ホスト
docker cp CONTAINER_ID:/path/file.txt .

Docker Compose

サービス起動

# バックグラウンド起動
docker compose up -d

# ビルドしてから起動
docker compose up -d --build

サービス停止

# 停止のみ
docker compose stop

# 停止 + コンテナ削除
docker compose down
downはボリュームは削除しません

ログ確認

# 全サービスのログ
docker compose logs -f

# 特定サービスのログ
docker compose logs -f web

コマンド実行

# シェル起動
docker compose exec web bash

# 1回限りのコマンド実行
docker compose run web python manage.py migrate

Dockerfile 基本構文

Node.js アプリの例

# ベースイメージ
FROM node:18-alpine

# 作業ディレクトリ
WORKDIR /app

# 依存関係ファイルコピー
COPY package*.json ./

# パッケージインストール
RUN npm install

# ソースコードコピー
COPY . .

# ポート公開
EXPOSE 3000

# 起動コマンド
CMD ["npm", "start"]

Python アプリの例

# ベースイメージ
FROM python:3.11-slim

# 作業ディレクトリ
WORKDIR /app

# 依存関係ファイルコピー
COPY requirements.txt .

# パッケージインストール
RUN pip install --no-cache-dir -r requirements.txt

# ソースコードコピー
COPY . .

# ポート公開
EXPOSE 8000

# 起動コマンド
CMD ["python", "app.py"]

主要命令

FROM ベースイメージ指定
WORKDIR 作業ディレクトリ設定
COPY ホストからファイルコピー
RUN ビルド時コマンド実行
EXPOSE 公開ポート番号指定
CMD デフォルト起動コマンド
ENV 環境変数設定
VOLUME ボリュームマウントポイント

ボリューム・ネットワーク

ボリューム操作

# ボリューム作成
docker volume create myvolume

# ボリューム一覧
docker volume ls

# ボリューム削除
docker volume rm myvolume

# マウント例
docker run -v myvolume:/data nginx

ネットワーク操作

# ネットワーク作成
docker network create mynetwork

# ネットワーク一覧
docker network ls

# ネットワーク削除
docker network rm mynetwork

# コンテナをネットワークに接続
docker run --network mynetwork nginx

実務で役立つTips

一括クリーンアップ

停止中コンテナ、未使用イメージ、ボリューム、ネットワークを一括削除

docker system prune -a

ディスク使用量確認

イメージ、コンテナ、ボリュームの使用量を確認

docker system df

リソース監視

実行中コンテナのCPU、メモリ使用状況をリアルタイム表示

docker stats

詳細情報確認

コンテナやイメージの詳細設定をJSON形式で表示

docker inspect CONTAINER_ID

docker run のよく使うオプション

-d

バックグラウンド実行

-it

インタラクティブモード + 疑似ターミナル

--name

コンテナ名指定

-p

ポートマッピング(ホスト:コンテナ)

-v

ボリュームマウント

-e

環境変数設定

--rm

終了時に自動削除

--network

ネットワーク指定

--env-file

環境変数ファイル指定

危険な操作(要注意)

全コンテナ強制削除

# 実行中含むすべてのコンテナを強制削除
docker rm -f $(docker ps -aq)
本番環境では絶対に実行しないこと

全イメージ削除

# すべてのイメージを削除
docker rmi -f $(docker images -q)
再ダウンロードが必要になる

システム完全クリーンアップ

# ボリュームも含めて完全削除
docker system prune -a --volumes
データベースデータも削除される

特権モード実行

# ホストへフルアクセス可能に
docker run --privileged ubuntu
セキュリティリスクが高い