7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker Desktopで始めるKubernetes入門 - 5分でWebサーバーを動かそう

Last updated at Posted at 2025-12-11

これは ZOZO Advent Calendar 2025 カレンダー Vol.9 の 12日目の記事です

はじめに

「Kubernetesって難しそう...」と思っていませんか?

実は、Docker Desktopがあれば、ローカル環境で簡単にKubernetesを試すことができます。

この記事では、クラスタの作成から、Kubernetes環境に作成したWebサーバーからリクエストが返ってくるところまでを、ステップバイステップで解説します。

検証環境

項目 バージョン
Mac Apple M1 Pro
Docker Desktop 4.54.0
Kubernetes v1.32.8
kubectl v1.34.1

事前準備

  • Docker Desktopがインストールされていること
  • ターミナルが使えること

用語解説

本記事で登場するKubernetes用語を簡単に説明します。

用語 説明
クラスタ (Cluster) Kubernetesが動作するサーバー群のこと。今回はDocker Desktop上に1台構成で作成します
ノード (Node) クラスタを構成する個々のサーバー。コンテナが実際に動く場所です
Namespace クラスタ内でリソースを論理的に分離する仕組み。プロジェクトや環境ごとに分けて管理できます
Pod Kubernetesでコンテナを動かす最小単位。1つ以上のコンテナをまとめたものです
Deployment Podの作成・更新・削除を管理するリソース。「nginxを1台動かして」という宣言ができます
Service Podへのアクセス方法を定義するリソース。Podは起動するたびにIPが変わるため、Serviceで固定のアクセス先を提供します
NodePort Serviceの公開方法の1つ。ノードの特定ポートを開放して外部からアクセス可能にします
マニフェスト Kubernetesリソースの設定をYAML形式で記述したファイル。「こういう状態にしてほしい」という宣言です

Step 1: Kubernetesクラスタを作成する

1-1. Docker Desktopの設定を開く

Docker Desktopを起動し、左メニューから Kubernetes を選択します。
image.png

1-2. クラスタを作成する

「Create cluster」 ボタンをクリックします。

image.png

設定はお好みですが、ローカルでの環境なのでそこまでスペックはいらないかなと思い最小構成にしてます:

  • kindで作成
  • ノード数: シングル(1台)
  • Kubernetesバージョン: v1.32系の最新版(色々なバージョン指定できるのでお好みでどうぞ)

image.png

kindの詳しい説明はこちら
参考:https://kind.sigs.k8s.io/

1-3. クラスタの起動を待つ

クラスタが立ち上がるのを待ちます。

image.png

クラスタが作成されるとGUI上でもクラスタの情報が確認できるようになります!
image.png

1-4. クラスタへの接続を確認する

ターミナルで以下のコマンドを実行します:

# クラスタ情報を確認
kubectl cluster-info

出力例:

Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

image.png

# ノードの状態を確認
kubectl get nodes

出力例:

NAME                    STATUS   ROLES           AGE   VERSION
desktop-control-plane   Ready    control-plane   1m    v1.32.8

image.png

「Ready」と表示されていれば、Kubernetesクラスタのセットアップは完了です!

Step 2: Namespaceを作成する

Kubernetesでは、リソースを論理的に分離するために Namespace を使います。今回は advent-demo という名前のNamespaceを作成します。

# Namespaceを作成
kubectl create namespace advent-demo

# 作成されたことを確認
kubectl get namespaces

出力例:

NAME              STATUS   AGE
advent-demo       Active   5s
default           Active   5m
kube-node-lease   Active   5m
kube-public       Active   5m
kube-system       Active   5m

advent-demo が表示されていればOKです!

作成したNamespaceはDocker Desktopでも確認できます。

image.png

Step 3: Webサーバー(nginx)をデプロイする

3-1. Deployment用のマニフェストを作成

まず、nginxを動かすためのDeploymentマニフェストを作成します。

nginx-deployment.yaml というファイルを作成し、以下の内容を記述します:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: advent-demo
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80

3-2. Deploymentを適用する

# マニフェストを適用
kubectl apply -f nginx-deployment.yaml

# Podの状態を確認
kubectl get pods -n advent-demo

出力例:

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-55d67f7b54-ccwmc   1/1     Running   0          35s

STATUSが Running になれば、nginxが起動しています!

image.png

Step 4: Serviceを作成してアクセスできるようにする

Podは直接外部からアクセスできないため、Service を作成してアクセス可能にします。

4-1. Service用のマニフェストを作成

nginx-service.yaml というファイルを作成します:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: advent-demo
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80

4-2. Serviceを適用する

# マニフェストを適用
kubectl apply -f nginx-service.yaml

# Serviceの状態を確認
kubectl get services -n advent-demo

出力例:

NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-service   ClusterIP   XX.XX.XXX.XXX   <none>       80:30080/TCP   10s

CLUSTER-IPは各々の環境のIPが入ります
※ Serviceが作成されるたびにKubernetesが自動的に割り当てるので、環境ごとに異なります。
image.png

Step 5: WEBサーバーへアクセスしてみよう!

ローカルからServiceにアクセスするために、kubectl port-forward を使います。

# ポートフォワードを開始(フォアグラウンドで実行される)
kubectl port-forward -n advent-demo svc/nginx-service 8080:80

出力例:

Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80

コマンドラインから確認

curl http://localhost:30080

出力例:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</html>

image.png

まとめ

この記事では、以下の手順でDocker Desktop上にKubernetes環境を構築しました:

  1. クラスタ作成: Docker DesktopのKubernetes機能を有効化
  2. Namespace作成: advent-demo Namespaceを作成
  3. Deploymentデプロイ: nginxコンテナをPodとして起動
  4. Serviceでの公開: NodePortでローカルからアクセス可能に

Kubernetes入門として、今回は最もシンプルな構成を紹介しました。
ローカルでサクッとKubernetesを動かしてみたい時に本記事を参考にいただけると嬉しいです!

Happy Kubernetes Life!

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?