基本操作

Dockerとは

Dockerは、アプリケーションをコンテナという軽量な実行環境で動かすためのプラットフォームです。 コンテナを使うことで、開発環境と本番環境の差異をなくし、「自分の環境では動く」問題を解決します。

基本概念

  • イメージ: アプリケーションとその依存関係をパッケージ化したテンプレート
  • コンテナ: イメージから起動された実行環境の実体
  • レジストリ: イメージを保存・共有する場所(Docker Hubなど)
  • Dockerfile: イメージを作成するための設計図

インストール確認

Dockerが正しくインストールされているか確認します。

# バージョン確認
docker --version
# または
docker version

# Docker詳細情報の表示
docker info

ヘルプの表示

# 全コマンドのヘルプ
docker --help

# 特定コマンドのヘルプ
docker run --help
docker build --help

コンテナの起動

docker runは最も基本的なコマンドです。イメージからコンテナを作成して起動します。

# 基本形
docker run [オプション] イメージ名 [コマンド]

# Nginxコンテナを起動
docker run nginx

# コンテナ名を指定して起動
docker run --name my-nginx nginx

# バックグラウンドで起動(デタッチモード)
docker run -d nginx

# ポートマッピング(ホスト:コンテナ)
docker run -d -p 8080:80 nginx

✓ デタッチモード(-d)を使うと、コンテナがバックグラウンドで動作します

✗ デタッチモードなしで起動すると、ターミナルが占有されます

コンテナの一覧表示

# 実行中のコンテナを表示
docker ps

# 全てのコンテナを表示(停止中も含む)
docker ps -a

# 最新のコンテナのみ表示
docker ps -l

# コンテナIDのみ表示
docker ps -q

コンテナの停止・開始・再起動

# コンテナの停止(猶予時間あり)
docker stop コンテナID
docker stop my-nginx

# コンテナの強制停止
docker kill コンテナID

# 停止中のコンテナを開始
docker start コンテナID

# コンテナを再起動
docker restart コンテナID

# 複数コンテナを一度に停止
docker stop コンテナID1 コンテナID2

stopはグレースフルシャットダウン(正常終了)を試みます

killは即座に強制終了するため、データ損失の可能性があります

コンテナの削除

# 停止中のコンテナを削除
docker rm コンテナID

# 実行中のコンテナを強制削除
docker rm -f コンテナID

# 複数コンテナを削除
docker rm コンテナID1 コンテナID2

# 停止中の全コンテナを削除
docker container prune

# 確認なしで削除
docker container prune -f

イメージの削除

# イメージを削除
docker rmi イメージ名
docker rmi nginx

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

# 強制削除
docker rmi -f イメージID

# 未使用イメージを全て削除
docker image prune

# タグなしイメージも含めて削除
docker image prune -a

よく使う組み合わせ

# コンテナ起動後、終了時に自動削除
docker run --rm nginx

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

# デタッチモード + ポートマッピング + コンテナ名指定
docker run -d -p 8080:80 --name my-web nginx

# 環境変数を設定して起動
docker run -e MY_VAR=value nginx

実用例

# Nginx Webサーバーを起動
docker run -d -p 80:80 --name web-server nginx

# MySQL データベースを起動
docker run -d \
  --name mysql-db \
  -e MYSQL_ROOT_PASSWORD=mypassword \
  -p 3306:3306 \
  mysql:8.0

# Node.js 開発環境を起動
docker run -it --rm \
  -v $(pwd):/app \
  -w /app \
  node:18 \
  npm install