Docker คือ ตอนที่ 9 : Docker ขั้นสูง

  1. Docker Swarm
  2. Docker Secrets
  3. Docker สำหรับ AWS และ Azure

Docker เป็นผู้เปลี่ยนเกมในโลกของการทำแอพและการปรับใช้ ช่วยให้นักพัฒนามีวิธีที่มีประสิทธิภาพและสะดวกในการทำแอพและปรับใช้แอปพลิเคชันในลักษณะที่รับประกันความสอดคล้องกันในสภาพแวดล้อมที่หลากหลาย แม้ว่าฟังก์ชันพื้นฐานของ Docker จะตรงไปตรงมาและทรงพลัง แต่ก็มีแนวคิดขั้นสูงที่ให้ความยืดหยุ่นและการควบคุมที่ดียิ่งขึ้นไปอีก แนวคิดเหล่านี้ประกอบด้วย Docker Swarm, Docker Secrets และ Docker integrations กับแพลตฟอร์มคลาวด์ เช่น AWS และ Azure ในบทความนี้ เราจะเจาะลึกแนวคิด Docker ขั้นสูงเหล่านี้ โดยใช้แนวทางปฏิบัติที่มุ่งเน้นไปที่การทำแอพ

1. Docker Swarm

Docker Swarm เป็นเครื่องมือจัดการคอนเทนเนอร์แบบเนทีฟของ Docker Orchestration ในบริบทนี้หมายถึงระบบอัตโนมัติของการปรับใช้ การปรับขนาด และการจัดการแอปพลิเคชันคอนเทนเนอร์ ในขณะที่ Docker นั้นยอดเยี่ยมสำหรับการเรียกใช้แอปพลิเคชันแบบแยกส่วน แต่ Docker Swarm ก้าวไปอีกขั้นด้วยการอนุญาตให้ปรับขนาดแอปพลิเคชันในโฮสต์ Docker หลายโฮสต์

การสร้าง Docker Swarm เกี่ยวข้องกับการเริ่มต้น Swarm การเพิ่มโหนด และการปรับใช้บริการ หากต้องการสร้าง Swarm คุณสามารถใช้คำสั่ง docker swarm init คำสั่งนี้จะส่งออกโทเค็นที่คุณสามารถใช้เพื่อเพิ่มโหนดผู้ปฏิบัติงานให้กับ Swarm ของคุณ

ลองพิจารณาตัวอย่างที่เราทำแอพด้วย Docker Swarm สมมติว่าเรามีเว็บแอปพลิเคชันง่ายๆ แอปพลิเคชันประกอบด้วยบริการส่วนหน้า บริการส่วนหลัง และบริการฐานข้อมูล เราสามารถสร้างไฟล์ docker-compose.yml ที่อธิบายถึงบริการเหล่านี้ จากนั้นปรับใช้สแต็คกับกลุ่มของเรา

version: "3"
services:
  web:
    image: my-web-app
    ports:
      - "80:80"
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
  api:
    image: my-api-app
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.2"
          memory: 100M
  db:
    image: my-db-app
    volumes:
      - db-data:/var/lib/db
    deploy:
      placement:
        constraints: [node.role == manager]

volumes:
  db-data:

คุณสามารถปรับใช้สแตกได้ด้วยคำสั่ง docker stack deploy -c docker-compose.yml myApp จากนั้น Docker Swarm จะจัดการส่วนที่เหลือ โดยสร้างบริการและปรับขนาดตามโหนดใน Swarm ตามข้อกำหนดในไฟล์เขียน

2. Docker Secrets

ในขณะที่ทำแอพ มักจำเป็นต้องจัดการกับข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่าน คีย์ API หรือใบรับรอง SSL Docker มอบวิธีที่ปลอดภัยในการจัดเก็บและจัดการข้อมูลที่ละเอียดอ่อนดังกล่าวโดยใช้ Secrets ของ Docker

Secrets ของ Docker สามารถเข้าถึงได้เฉพาะกับบริการที่ทำงานในกลุ่มที่ได้รับสิทธิ์การเข้าถึงอย่างชัดเจน Secrets ถูกจัดเก็บไว้ในบันทึก Raft ที่เข้ารหัสของ Swarm ซึ่งเข้าถึงได้เฉพาะโหนดผู้จัดการเท่านั้น โหนดผู้ปฏิบัติงานได้รับเฉพาะข้อมูลลับที่จำเป็นเพื่อเรียกใช้บริการที่ได้รับมอบหมาย

สมมติว่าเว็บแอปพลิเคชันของเราจำเป็นต้องเชื่อมต่อกับฐานข้อมูลโดยใช้รหัสผ่าน เราสามารถสร้าง Docker Secret เพื่อเก็บรหัสผ่านนี้อย่างปลอดภัย เราจะใช้คำสั่งต่อไปนี้เพื่อสร้าง Secrets: echo "myDbPassword" | docker secret create db_password -. คำสั่งนี้สร้างชื่อลับdb_passwordด้วยค่า “myDbPassword”

หากต้องการใช้ Secrets นี้ในแอปพลิเคชันของเรา เราจะแก้ไขdocker-compose.ymlไฟล์ของเราดังนี้:

version: "3"
services:
  web:
    image: my-web-app
    ports:
      - "80:80"
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
    secrets:
      - db_password
  api:
    image: my-api-app
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.2"
          memory: 100M
    secrets:
      - db_password
  db:
    image: my-db-app
    volumes:
      - db-data:/var/lib/db
    deploy:
      placement:
        constraints: [node.role == manager]
    secrets:
      - db_password

volumes:
  db-data:

secrets:
  db_password:
    external: true

สิ่งนี้ทำให้บริการในแอปพลิเคชันของเราสามารถเข้าถึง Secrets ที่ db_password ได้ บริการสามารถใช้ Secrets ในการตรวจสอบกับฐานข้อมูล

3. Docker สำหรับ AWS และ Azure

Docker มอบการผสานรวมที่แน่นแฟ้นกับแพลตฟอร์มคลาวด์ยอดนิยม เช่น Amazon Web Services (AWS) และ Microsoft Azure การผสานรวมนี้ช่วยให้นักพัฒนาสามารถใช้ประโยชน์จากพลังของแพลตฟอร์มเหล่านี้ร่วมกับความสามารถของ Docker ในการทำแอพ

ด้วย Docker สำหรับ AWS คุณสามารถสร้างคลัสเตอร์ Docker Swarm ที่ทำงานบนอินสแตนซ์ EC2 ได้อย่างง่ายดาย Docker สำหรับ AWS ผสานรวมกับบริการของ AWS เช่น ELB, EBS และ CloudWatch คุณสามารถใช้ AWS Management Console, AWS CLI หรือ Docker CLI เพื่อจัดการแอปพลิเคชัน Docker ของคุณที่ทำงานบน AWS

ในทำนองเดียวกัน Docker for Azure มอบประสบการณ์ Docker ที่ราบรื่นในสภาพแวดล้อม Azure ผสานรวมกับบริการของ Azure เช่น VM Scale Sets, Azure Load Balancer และ Azure Monitor

หากต้องการทำแอพโดยใช้ Docker สำหรับ AWS คุณต้องสร้าง Docker Swarm บน AWS ก่อน Docker มีเทมเพลต CloudFormation ที่สร้างคลัสเตอร์โหมด Docker Swarm ที่กำหนดค่าไว้อย่างสมบูรณ์บน AWS จากนั้นคุณสามารถปรับใช้แอปพลิเคชันของคุณกับ Swarm โดยใช้ Docker CLI

Docker สำหรับ Azure ทำงานในลักษณะเดียวกัน คุณจะใช้เทมเพลต Azure Resource Manager ที่ Docker ให้มาเพื่อสร้าง Docker Swarm จากนั้นปรับใช้แอปพลิเคชันของคุณกับ Swarm


Docker นำเสนอคุณสมบัติขั้นสูงหลายอย่างที่เป็นประโยชน์อย่างมากในการทำแอพ ปรับใช้ และจัดการแอปพลิเคชัน Docker Swarm ช่วยให้คุณสามารถจัดการแอปพลิเคชันของคุณ Secrets ของ Docker ช่วยให้คุณจัดการข้อมูลที่ละเอียดอ่อนได้อย่างปลอดภัย และการผสานรวมของ Docker กับแพลตฟอร์มระบบคลาวด์ เช่น AWS และ Azure ช่วยให้คุณสามารถใช้ประโยชน์จากความสามารถของแพลตฟอร์มเหล่านี้ได้ เมื่อทำความเข้าใจและใช้ประโยชน์จากคุณสมบัติเหล่านี้ คุณจะได้รับประโยชน์สูงสุดจากเทคโนโลยีการบรรจุคอนเทนเนอร์อันทรงพลังของ Docker ในการทำแอพ


Docker คืออะไร

Docker คือ ตอนที่ 8 : แนวทางปฏิบัติที่ดีที่สุด (Best Practices)