Skip to content

Containerization Deployment ​

āļāļēāļĢāđƒāļŠāđ‰ Docker āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ container āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ āđāļĨāļ°āđƒāļŠāđ‰ Kubernetes āļŦāļĢāļ·āļ­ Docker Swarm āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļĢ deploy container āđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™ āļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāđāļĨāļ°āļāļēāļĢāļ‚āļĒāļēāļĒāļ•āļąāļ§āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž

Build a Docker Image just like how you would configure a VM

Docker ​

Docker āđ€āļ›āđ‡āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ container āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļŦāļ™āđˆāļ§āļĒāđ€āļĨāđ‡āļ āđ† āļ‚āļ­āļ‡āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāļ—āļĩāđˆāļšāļĢāļĢāļˆāļļāđ‚āļ„āđ‰āļ”āđāļĨāļ°āļāļēāļĢāļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āđƒāļŠāđ‰ Docker ​

  1. āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Docker:

    • āļŠāļģāļŦāļĢāļąāļš Windows
    • āļŠāļģāļŦāļĢāļąāļš macOS
    • āļŠāļģāļŦāļĢāļąāļš Linux
  2. āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒ Dockerfile: āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ„āļŸāļĨāđŒ Dockerfile āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ Node.js:

    Dockerfile
    # āđƒāļŠāđ‰āļ āļēāļžāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ Node.js
    FROM node:14
    
    # āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ”irectoryāļ—āļģāļ‡āļēāļ™āđƒāļ™ container
    WORKDIR /app
    
    # āļ„āļąāļ”āļĨāļ­āļāđ„āļŸāļĨāđŒ package.json āđāļĨāļ° package-lock.json
    COPY package*.json ./
    
    # āļ•āļīāļ”āļ•āļąāđ‰āļ‡ dependencies
    RUN npm install
    
    # āļ„āļąāļ”āļĨāļ­āļāđ„āļŸāļĨāđŒāđ‚āļ›āļĢāđ€āļˆāļ„āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđ„āļ›āļĒāļąāļ‡ container
    COPY . .
    
    # āđ€āļ›āļīāļ”āļžāļ­āļĢāđŒāļ•āļ—āļĩāđˆāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļˆāļ°āļĢāļąāļ™
    EXPOSE 3000
    
    # āļ„āļģāļŠāļąāđˆāļ‡āļĢāļąāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™
    CMD ["npm", "start"]
  3. āļŠāļĢāđ‰āļēāļ‡ Docker Image:

    bash
    docker build -t my-app .
  4. āļĢāļąāļ™ Docker Container:

    bash
    docker run -p 3000:3000 my-app

Kubernetes ​

Kubernetes āđ€āļ›āđ‡āļ™āļĢāļ°āļšāļšāļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ container āđāļšāļšāļāļĢāļ°āļˆāļēāļĒ āļĢāļ§āļĄāļ–āļķāļ‡āļāļēāļĢāļ›āļĢāļąāļšāļ‚āļ™āļēāļ” āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ• āđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡ container

āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ Kubernetes ​

  1. āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Kubernetes:

    • āļŠāļģāļŦāļĢāļąāļš Windows
    • āļŠāļģāļŦāļĢāļąāļš macOS
    • āļŠāļģāļŦāļĢāļąāļš Linux
  2. āļ•āļīāļ”āļ•āļąāđ‰āļ‡ Minikube āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļĢāļąāļ™ Kubernetes āđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡:

  3. āđ€āļĢāļīāđˆāļĄ Minikube:

    bash
    minikube start

āļāļēāļĢāļ›āļĢāļąāļšāđƒāļŠāđ‰āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ”āđ‰āļ§āļĒ Kubernetes ​

  1. āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒ Deployment: āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ„āļŸāļĨāđŒ deployment.yaml āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ Node.js:

    yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-app
            image: my-app:latest
            ports:
            - containerPort: 3000
  2. āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒ Service: āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ„āļŸāļĨāđŒ service.yaml:

    yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      type: NodePort
      selector:
        app: my-app
      ports:
      - port: 3000
        targetPort: 3000
        nodePort: 30001
  3. āļ›āļĢāļąāļšāđƒāļŠāđ‰ Deployment āđāļĨāļ° Service:

    bash
    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
  4. āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™:

    bash
    minikube service my-app-service

Docker Swarm ​

Docker Swarm āđ€āļ›āđ‡āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ container āđāļšāļšāļāļĢāļ°āļˆāļēāļĒ āđ‚āļ”āļĒāļĄāļĩāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļ‡āđˆāļēāļĒāļāļ§āđˆāļē Kubernetes

āļāļēāļĢāđƒāļŠāđ‰ Docker Swarm ​

  1. āļŠāļĢāđ‰āļēāļ‡ Swarm Cluster:

    bash
    docker swarm init
  2. āļŠāļĢāđ‰āļēāļ‡ Service: āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ Service āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ Node.js:

    bash
    docker service create --name my-app --publish published=3000,target=3000 my-app
  3. āļ•āļĢāļ§āļˆāļŠāļ­āļš Service:

    bash
    docker service ls
  4. āļŠāđ€āļāļĨ Service:

    bash
    docker service scale my-app=3
  5. āļĨāļš Service:

    bash
    docker service rm my-app

āļŠāļĢāļļāļ› ​

āļāļēāļĢāđƒāļŠāđ‰ Docker āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ container āļŠāļģāļŦāļĢāļąāļšāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ āđāļĨāļ°āļāļēāļĢāđƒāļŠāđ‰ Kubernetes āļŦāļĢāļ·āļ­ Docker Swarm āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļĢ deploy container āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄāđāļĨāļ°āļāļēāļĢāļ‚āļĒāļēāļĒāļ•āļąāļ§āļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļ›āđ‡āļ™āđ„āļ›āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™

Containerization Deployment āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļĄāļĩāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™ āļŠāļ°āļ”āļ§āļ āđāļĨāļ°āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āđāļĨāļ°āļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļē

āđāļ™āļ°āļ™āļģāđ€āļ™āļ·āđ‰āļ­āļŦāļē ​

āđ€āļ•āļĢāļĩāļĒāļĄāđ€āļ„āļĢāļ·āđˆāļ­āļ‡ Windows āļ‚āļ­āļ‡āđ€āļĢāļēāđƒāļŦāđ‰āļžāļĢāđ‰āļ­āļĄāļžāļąāļ’āļ™āļē Modern Application āļ”āđ‰āļ§āļĒ WSL2 āđāļĨāļ° Docker Desktop

āļāļķāļāļ§āļīāļŠāļē Docker Image & Container