この記事でわかること
- Windows PC 1台で Linux / Docker / Kubernetes を試す方法
- WSL2・Docker Desktop・Kubernetesの役割関係
- 「Dockerで動く」と「Kubernetesで動く」の違い
- 非エンジニアでもk8sを“体感”する最短ルート
※ 本記事は「本番運用」ではなく、学習・検証目的の内容です
1. はじめに
「Linux」「Docker」「Kubernetes」。
何となく聞いたことはあるものの、実際に「どう構築するのか」はフワッとしたままでした。
そのため、この記事では、Windows PC一台を使って、「Linux環境の構築」から「Kubernetes(クバネティス)でのアプリ運用」までの構築を行ってみます。
2. 今回チャレンジすることの全貌
システムの構成図
一言で言うと、**「Windowsという家の中に、最新の全自動Web工場を建てる」**作業です。
+---------------------------------------------------------+
| [1] Windows (あなたのPC) |
| +---------------------------------------------------+ |
| | [2] Linux / WSL2 (作業部屋を確保する) | |
| | +-------------------------------------------+ | |
| | | [3] Docker (アプリを箱詰めにする) | | |
| | | +-----------------------------------+ | | |
| | | | [4] Kubernetes (工場のリーダー) | | | |
| | | | [Webサイト] [Webサイト] | | | |
| | | +-----------------------------------+ | | |
| | +-------------------------------------------+ | |
| +---------------------------------------------------+ |
+---------------------------------------------------------+
今回のロードマップ
以下の5つのステップで、実際に動くシステムを作り上げていきます。
| ステップ | 何をするStepなのか |
|---|---|
| Step 1 | WSL2を導入し、Linux環境を立ち上げる |
| Step 2 | Docker Desktopをインストールし、Linuxと連携させる |
| Step 3 | 標準のNginxをDockerとKubernetesで起動してみる |
| Step 4 | Dockerfileを書き、自分だけのオリジナルWebイメージを作る |
| Step 5 | Kubernetes(k8s)に自作イメージをデプロイする |
それでは、最初のステップである「Linux環境(WSL2)の構築」から始めていきましょう!
3. Linux環境(WSL2)の構築
Windowsの中でLinuxを動かすための「WSL2」を導入します。
※なお、こちらの構築は以下Youtube動画を元に導入しています。
Dockerより簡単!!Windowsで簡単にLinuxが動くWSLを使ってみよう!
① Windows側の機能を有効にする
まずはWindowsの設定で、Linuxを動かすための「土台」を許可します。
- [設定] > [システム] > [オプション機能] を開く
- 画面下のほうにある [Windows のその他の機能] をクリック
- リストの中から以下の2つにチェックを入れる
- Linux 用 Windows サブシステム
- 仮想マシンプラットフォーム
- [OK] を押し、指示に従ってPCを再起動
② WSLのデフォルトバージョンを「2」に設定する
WSLには1と2がありますが、より高性能な「2」を標準で使うように設定します。
- Windowsの検索バーに「PowerShell」と入力し、「管理者として実行」**をクリック
- 以下のコマンドを入力して実行
wsl --set-default-version 2
③ Linux(Ubuntu)をインストールする
- 引き続きPowerShellで、インストール可能なリストを確認(参考)
wsl -l -o
- 以下のコマンドで、Ubuntu(今回は22.04)をインストール
wsl --install -d Ubuntu-22.04
④ ユーザー設定を行う
インストールが終わると自動で新しい黒い画面が立ち上がるので、初期設定を行います。
-
Enter new UNIX username: 好きな名前(例:
tanaka)を入力 -
New password: 好きなパスワードを入力
- ※入力中、画面には何も表示されませんが、しっかり打ち込んでください
-
Retype new password: もう一度同じパスワードを入力
画面に Installation successful! と表示され、入力待ち状態($ マーク)になれば、あなたのPCの中にLinux環境が誕生しました!
Step 2: Docker & Kubernetesの準備
次に、コンテナを動かすための「Docker Desktop」を準備します。
-
公式サイトからダウンロードしてインストール
-
設定(歯車アイコン)を開き、以下を確認・変更
-
確認コマンド(Linuxの画面で入力):
docker --version
# バージョンが出ればOK
kubectl get nodes
# 「Ready」と出れば、あなたのPCがK8sサーバーになりました!
Step 3:【基礎編】標準のNginxを動かしてみる
まずは改造前の「標準のNginx(Webサーバー)」が動くかテストします。
Dockerで動かす
docker run -d -p 8080:80 --name test-nginx nginx
ブラウザで http://localhost:8080 を開き「Welcome to nginx!」が出れば成功!
Kubernetesで動かす
kubectl create deployment k8s-nginx --image=nginx
kubectl expose deployment k8s-nginx --type=LoadBalancer --port=8888 --target-port=80
ブラウザで http://localhost:8888 を開き、同様の画面が出ればk8sも準備万端です。
※ 補足
本記事では Docker Desktop の Kubernetes を使用しているため
type: LoadBalancer がローカルでも動作します。
クラウド環境(GKE / EKS など)では挙動が異なる点に注意してください。
次からは【応用編】として、オリジナルWebサーバーを作成していきます。
Step 4:Dockerfileを書き、自分だけのオリジナルWebイメージを作る
「Welcome to nginx!」を自分の好きな文字に書き換えた「世界に一つだけのコンテナ」を作ります。
-
作業用のフォルダ(ディレクトリ)を作成する
mkdir my-web-site -
作成したフォルダの中に移動する
cd my-web-site -
表示する画面を作る:
echo '<h1>Hello, My Docker World!</h1>' > index.html -
設計図(Dockerfile)を作る:
cat <<EOF > Dockerfile FROM nginx:latest COPY index.html /usr/share/nginx/html/index.html EOF -
自分専用のイメージとして組み立てる:
docker build -t my-custom-nginx .
Step 5:自作サーバーをKubernetesで公開する
最後に、作成した自作イメージをKubernetesの管理下に置きます。
-
設定図(my-app.yaml)の作成:
apiVersion: apps/v1 kind: Deployment metadata: name: my-k8s-custom-app spec: replicas: 2 # 常に2つ起動させておく selector: matchLabels: app: my-web template: metadata: labels: app: my-web spec: containers: - name: nginx image: my-custom-nginx imagePullPolicy: Never # 手元のイメージを使う指示 --- apiVersion: v1 kind: Service metadata: name: my-k8s-service spec: type: LoadBalancer ports: - port: 8888 targetPort: 80 selector: app: my-web -
実行
kubectl apply -f my-app.yaml -
確認:
http://localhost:8888にアクセス!
6. おわりに
当初構築を行う前は「難しくて時間かかるだろうな~」と思ってましたが、すぐに検証することができ感動がありました。
なお、エラーが発生した際は、生成AIや公式ドキュメントを併用することで、よりスムーズに原因切り分けができました。
是非皆様もお試しください。



