3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【やってみた】非エンジニアがWindowsでLinux環境を構築しDocker・Kubernetesを試してみた

3
Posted at

この記事でわかること

  • 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を動かすための「土台」を許可します。

  1. [設定] > [システム] > [オプション機能] を開く
  2. 画面下のほうにある [Windows のその他の機能] をクリック
  3. リストの中から以下の2つにチェックを入れる
    • Linux 用 Windows サブシステム
    • 仮想マシンプラットフォーム
  4. [OK] を押し、指示に従ってPCを再起動

② WSLのデフォルトバージョンを「2」に設定する

WSLには1と2がありますが、より高性能な「2」を標準で使うように設定します。

  1. Windowsの検索バーに「PowerShell」と入力し、「管理者として実行」**をクリック
  2. 以下のコマンドを入力して実行
wsl --set-default-version 2

③ Linux(Ubuntu)をインストールする

  1. 引き続きPowerShellで、インストール可能なリストを確認(参考)
wsl -l -o
  1. 以下のコマンドで、Ubuntu(今回は22.04)をインストール
wsl --install -d Ubuntu-22.04

④ ユーザー設定を行う

インストールが終わると自動で新しい黒い画面が立ち上がるので、初期設定を行います。

  1. Enter new UNIX username: 好きな名前(例:tanaka)を入力

  2. New password: 好きなパスワードを入力

    • ※入力中、画面には何も表示されませんが、しっかり打ち込んでください
  3. Retype new password: もう一度同じパスワードを入力

画面に Installation successful! と表示され、入力待ち状態($ マーク)になれば、あなたのPCの中にLinux環境が誕生しました!


Step 2: Docker & Kubernetesの準備

次に、コンテナを動かすための「Docker Desktop」を準備します。

  1. 公式サイトからダウンロードしてインストール

  2. 設定(歯車アイコン)を開き、以下を確認・変更

    • Resources > WSL integration: 使用しているLinux(Ubuntu)のスイッチをONにする
      image.png

    • Kubernetes: 「Enable Kubernetes」にチェックを入れ、Apply & Restartを押す(※5分ほどかかります)
      image.png

  3. 確認コマンド(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も準備万端です。

image.png

※ 補足
本記事では Docker Desktop の Kubernetes を使用しているため
type: LoadBalancer がローカルでも動作します。

クラウド環境(GKE / EKS など)では挙動が異なる点に注意してください。


次からは【応用編】として、オリジナルWebサーバーを作成していきます。

Step 4:Dockerfileを書き、自分だけのオリジナルWebイメージを作る

「Welcome to nginx!」を自分の好きな文字に書き換えた「世界に一つだけのコンテナ」を作ります。

  1. 作業用のフォルダ(ディレクトリ)を作成する

    mkdir my-web-site
    
  2. 作成したフォルダの中に移動する

    cd my-web-site
    
  3. 表示する画面を作る:

    echo '<h1>Hello, My Docker World!</h1>' > index.html
    
  4. 設計図(Dockerfile)を作る:

    cat <<EOF > Dockerfile
    FROM nginx:latest
    COPY index.html /usr/share/nginx/html/index.html
    EOF
    
  5. 自分専用のイメージとして組み立てる:

    docker build -t my-custom-nginx .
    

Step 5:自作サーバーをKubernetesで公開する

最後に、作成した自作イメージをKubernetesの管理下に置きます。

  1. 設定図(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
    
    
  2. 実行

    kubectl apply -f my-app.yaml
    
  3. 確認:
    http://localhost:8888 にアクセス!

image.png


6. おわりに

当初構築を行う前は「難しくて時間かかるだろうな~」と思ってましたが、すぐに検証することができ感動がありました。
なお、エラーが発生した際は、生成AIや公式ドキュメントを併用することで、よりスムーズに原因切り分けができました。

是非皆様もお試しください。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?