採用に向く条件
選ぶ理由
- 環境差をなくす(再現性)
- VM より軽量・高速
- イメージ共有(レジストリ)
製品プロフィール
Docker, Inc. / コンテナ
アプリと依存をコンテナにまとめ、どこでも同じように動かす技術。「自分の環境では動く」問題を解消する。
基本情報
選定ガイド
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
採用に向く条件
事前に確認する条件
詳しい解説
Docker は、アプリケーションを「コンテナ」という単位にまとめて動かすためのツールです。アプリ本体と、それが必要とするライブラリや設定をひとまとめにし、環境ごとの差をなくします。
「結局なに?」を一言でいえば、「どこでも同じ環境」を実現する仕組みです。開発機・テスト環境・本番で同じイメージを動かせるため、「自分の環境では動いたのに」という食い違いを減らせます。
横にスクロール
アプリと依存関係を固めたものを「イメージ」と呼び、それを実行した実体が「コンテナ」です。イメージの作り方は Dockerfile に記述します。
docker build -t myapp .
docker run myapp
コンテナは OS を丸ごと仮想化する仮想マシンと違い、ホストのカーネルを共有します。隔離は Linux カーネルの namespace(プロセス・ネットワーク・ファイルシステムなどの分離)と cgroup(CPU・メモリの制限)で実現され、仮想マシンより軽量で起動が速いのが利点です。
| 観点 | Docker(コンテナ) | 仮想マシン | Kubernetes |
|---|---|---|---|
| 分離単位 | プロセス(カーネル共有) | OS 丸ごと | コンテナ群の統括 |
| 重さ・起動 | 軽い・秒単位 | 重い・分単位 | (基盤) |
| 役割 | 作って動かす | 別 OS を動かす | 多数を運用 |
アプリの実行環境を統一したいとき、まず候補になります。一台で少数のコンテナなら Docker だけで十分です。
多数のコンテナを複数サーバーへ展開し、スケールや障害復旧まで自動化する段階では Kubernetes などのオーケストレーションが必要になります。イメージは軽量ベースとマルチステージビルドで小さく保ち、非 root 実行や信頼できるベースイメージで供給網リスクを抑えるのが定石です。
総じて Docker は、カーネル共有による軽量なコンテナで「どこでも同じ環境」を実現する、現代の開発・配備の基礎ツールです。
実装・運用の視点
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
開発環境の統一
種別: コンテナ / 提供元: Docker, Inc. / ライセンス: オープンソース+商用
VM より軽量・高速
単体ではスケール/運用機能が弱い(→ K8s)
向いている用途