実行基盤・ホスティング 種別:ツール 成熟度 安定 学習コスト 中

Docker

アプリと実行環境をイメージに固め、どこでも同じに動かすコンテナ基盤

分野「実行基盤・ホスティング」:書いたコードを、自分のパソコンの外で動かし続ける場所。 分野の役割とつながりは分野の解説へ。

別名:Docker Engine、Docker Desktop、Docker Compose、コンテナ

できること

Docker ができないこと

  • 複数ホストにまたがるオーケストレーション(単体では 1 台。Kubernetes・Swarm・マネージドサービスが別途必要)
  • Windows / macOS でのネイティブ実行(Linux VM を介するため、ファイル I/O が遅く VM がメモリを占有する)
  • 従業員 250 人以上または年商 1,000 万ドル以上の企業での Docker Desktop の無償利用
  • VM と同等の隔離(ホストのカーネルを共有するため、セキュリティ境界としては VM より弱い)
  • コンテナ削除後のデータ保持(ボリュームに置かない限り消える)

制約

先頭の行が、このツールで最も先に当たる制約。値はすべて出典の一次情報で確認したもの。

項目 影響 出典 検証日
Docker Desktop の無償利用の条件 (主要制約) 従業員 250 人未満かつ年商 1,000 万ドル未満の企業、個人利用、教育、非商用 OSS のみ無償。超える企業は Pro / Team / Business の有償サブスクリプションが必要。Docker Engine(Linux の CLI・デーモン)は対象外 中堅以上の企業では開発者全員分のライセンス費が発生する。Linux 上で Docker Engine を直接使うなら不要 docs.docker.com
Docker Hub のイメージ取得(pull)回数 未認証 100 pull / 6時間(IPv4 アドレスまたは IPv6 /64 単位)、Personal 認証 200 pull / 6時間。Pro 以上は無制限。マルチアーキテクチャのイメージはアーキテクチャごとに 1 pull と数える CI や社内 NAT のように IP を共有する環境では未認証の 100 回をすぐ超え、ビルドが 429 で止まる。ログインするか、ミラーや別レジストリを使う docs.docker.com
有償プランの価格 Pro $11 / ユーザー / 月(年払い $9)、Team $16(年払い $15)、Business $24 Desktop のライセンス条件に当たる企業は、開発者数×この単価が固定費になる www.docker.com
Docker Desktop for Windows の要件 64 bit の Windows 10 22H2 または Windows 11 23H2 以降、8 GB RAM、SLAT 対応 CPU、WSL 2.1.5 以降または Hyper-V 古い Windows や BIOS で仮想化が無効な PC では動かない。Home エディションは WSL 2 バックエンドのみ docs.docker.com
Docker Hub Personal のプライベートリポジトリ 1 個まで 非公開イメージを複数持つには有償プランか、GHCR・ECR など別レジストリが必要 docs.docker.com

典型的な落とし穴

  • latest タグは動く目印で再現性がない。バージョンタグかダイジェストで固定する
  • ビルド用ツールを含めたままのイメージは肥大化し、pull・デプロイが遅くなる。マルチステージビルドで実行に要るものだけ残す
  • コンテナ内で書いたファイルはコンテナ削除で消える。DB のデータなど状態はボリュームに置く
  • Mac / Windows でホストのディレクトリをマウントすると I/O が極端に遅くなる。node_modules 等はコンテナ側のボリュームに置く

コスト

課金モデル
無料枠あり
跳ねる条件

Docker Engine・CLI は Apache 2.0 で無償。Docker Desktop は従業員 250 人以上または年商 $10M 以上の企業で有償(Pro $11 / ユーザー / 月から)。Docker Hub は pull 回数とプライベートリポジトリ数がプランで変わる

出典
www.docker.com  検証

代替手段と差分

代替 何が違うか
Render Docker は手元やサーバーでコンテナを動かす道具で、動かす場所は自分で用意する。Render はその Dockerfile を渡すとビルド・配信・再起動まで運用してくれる場所。運用を持ちたくないなら Render
AWS Lambda Lambda はコンテナイメージ(10 GB まで)を関数として実行し、リクエスト単位で課金される。Docker は常駐プロセスを動かす前提で、Lambda の 15分・状態なしの制約を受けない

このツールを代替として挙げているページ: RenderTerraformFly.io

選定判断

「開発環境と本番環境を同じにしたい」「依存関係ごとパッケージして配布したい」場合の既定解。Web アプリの開発では最初から Dockerfile を置いてよい。避けるのは、Docker Desktop のライセンス費が問題になる企業で Linux 環境も用意できない場合と、単一の静的サイトや関数だけで済む場合(コンテナは過剰)

アプリケーションとその依存関係を「イメージ」に固め、Linux のカーネル機能で隔離して実行する仕組みである。Dockerfile で環境を宣言でき、同じイメージが開発者の PC・CI・本番で同じように動く。Render・AWS・Cloud Run など多くの実行基盤が Dockerfile を入力として受け付けるため、実行環境の共通語になっている。

利用者が最初に当たる制約は技術的なものではなく、Docker Desktop のライセンス条件(従業員 250 人・年商 $10M)と Docker Hub の pull 回数制限である。特に後者は CI で突然 429 が出て気づくことが多い。