本文へスキップ
BecomeCoder
ブログ一覧コース一覧

KubernetesとDockerの違い|どっちを使う?併用するの?を解消

#Docker#Kubernetes#インフラ#用語解説

結論:DockerKubernetesは「どっちが良いか」を選ぶ競合ではありません。Dockerが1個のコンテナを作って動かす道具、Kubernetesがそのコンテナを何十個も複数サーバーで運用する道具で、実務では両方を併用します。 つまり「Docker vs Kubernetes」ではなく「Dockerで作ったものをKubernetesで運用する」が正しい関係です。

なぜ「どっち?」と混乱するのか

「Docker Kubernetes 違い」「Kubernetes と Docker どっち」で検索する人の多くは、2つが同じ土俵の競合製品だと思っています。でも実際は担当する仕事の層が違うので、比べても答えは出ません。

料理でたとえると分かりやすいです。

弁当箱(Docker)があっても、大量配膳の仕組み(Kubernetes)にはなりません。逆に配膳システムだけあっても、中身の弁当は詰められません。だから併用します。

Dockerが何をする道具なのかは、Dockerとは ― 「どこでも同じ」を実現する箱 を読むのが早いです。読み物のあと、イメージとコンテナ ― 設計図と実体はじめてのコンテナ ― hello-world を動かすブラウザでそのままコマンドを実行できます(無料・登録不要・環境構築なし)。

役割の違いを一枚で

DockerKubernetes
ひとことでコンテナを作って動かすコンテナをまとめて運用する
担当する範囲1個のコンテナ何十〜何百のコンテナ、複数サーバー
代表コマンドdocker build / docker runkubectl apply / kubectl get
落ちたとき自分で docker start し直す自動で作り直す(自己修復)
混んだとき手で docker run を増やす自動または宣言でスケール
単位イメージ・コンテナPod・Deployment・Service

Dockerの docker build でコンテナの設計図(イメージ)を焼くところは Dockerfileとは ― イメージの設計図 で、複数サービスを1枚で定義する Compose は composeファイルとは でブラウザ実行しながら学べます。

Kubernetesは「Dockerだけでは足りない」から生まれた

コンテナを1個動かすだけなら docker run で十分です。問題は本番サービスの規模になったときです。

これを人手でやり続けるのは現実的に不可能です。そこで「あるべき状態を宣言すれば、現実をそこへ合わせ続けてくれる」仕組みとして Kubernetes が使われます。この動機はまさに なぜオーケストレーションが必要か ― Dockerだけでは足りない で、続く Kubernetesとは ― 宣言的・自己修復・スケール が核心の考え方です。

Kubernetesコースは前半(第1章の全体像)は読み物で、そのあとはkubectlシミュレータで実際にコマンドを打って確認できます。たとえば kubectl の基本操作(apply/get/describe/logs/exec/delete) や、運用の主役 Deployment ― 宣言的にアプリを管理する主役、安定した宛先を作る Service ― 安定した宛先とロードバランス はブラウザで手を動かせます。

よくある誤解を整理する

「Kubernetesを使うならDockerはいらない?」 いいえ。Kubernetesが動かす中身は結局コンテナです。そのコンテナ(イメージ)を作るのは Docker(や同等のツール)の仕事です。作る=Docker、運用する=Kubernetes、と層で分かれています。

「小さなアプリでもKubernetesを使うべき?」 多くの場合は不要です。コンテナ数が少なく1台で足りるうちは Docker だけ、あるいは Docker Compose で十分です。落ちたら自動で復活させたい・大量にスケールしたい、という運用の悩みが出てから Kubernetes を検討するのが順当です。

「DockerとVMの違いは?」 これはまた別のテーマです。Kubernetesとの比較ではなく、仮想マシンとの比較を知りたい人は DockerとVM(仮想マシン)の違い を読んでください。

まず何から手を動かす?

順序はシンプルです。先にDocker(コンテナを作る側)、次にKubernetes(運用する側)。土台であるコンテナのイメージが分かっていないと、Kubernetesのオブジェクトは腹落ちしません。

  1. Dockerの入門記事 → Docker入門(ブラウザで動かす) で全体像とコマンドの流れをつかむ。
  2. Dockerコースrunbuildcompose をブラウザ実行。
  3. Kubernetesの入門記事 → Kubernetes入門 で用語(Pod・Deployment・Service)を整理。
  4. Kubernetesコースkubectl apply からデプロイまでを手を動かして確認。

次に読む

← ブログ一覧に戻る