0Pricing
Azure Fundamentals · บทเรียน

Azure Container Instances

เปิดใช้แอปพลิเคชันแบบคอนเทนเนอร์ได้ภายในไม่กี่วินาทีด้วย ACI โดยไม่ต้องจัดการเซิร์ฟเวอร์ กำหนดค่าตัวแปรสภาพแวดล้อมและการเมานต์โวลุม และทำความเข้าใจการคิดค่าบริการของ ACI

Azure Container Instances เป็นบทเรียน Azure Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Azure Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

Azure Container Instances คืออะไร

Azure Container Instances (ACI) คือวิธีที่รวดเร็วที่สุดในการเรียกใช้เวิร์กโหลดแบบคอนเทนเนอร์ใน Azure โดยไม่ต้องจัดการเซิร์ฟเวอร์หรือระบบจัดการคลัสเตอร์ใด ๆ คุณระบุอิมเมจคอนเทนเนอร์ แล้ว Azure จะเรียกใช้อิมเมจนั้นภายในไม่กี่วินาทีบนโครงสร้างพื้นฐานแบบใช้ร่วมกันและรองรับผู้เช่าหลายราย ACI เหมาะอย่างยิ่งสำหรับงานที่มีอายุสั้น งานแบบชุด ตัวแทนสร้าง และเวิร์กโหลดที่ขับเคลื่อนด้วยเหตุการณ์ ซึ่งการเริ่มต้นคลัสเตอร์ Kubernetes เต็มรูปแบบจะเป็นภาระเกินความจำเป็น

การสร้าง Container Instance

เปิดใช้คอนเทนเนอร์ ACI ด้วยคำสั่ง az container create เพียงคำสั่งเดียว โดยระบุอิมเมจ กลุ่มทรัพยากร CPU และหน่วยความจำ ACI จะดึงอิมเมจ จัดสรรทรัพยากร และเริ่มต้นคอนเทนเนอร์ โดยทั่วไปใช้เวลาเพียง 5-10 วินาที Container instance แต่ละรายการจะได้รับ fully qualified domain name (FQDN) ที่ไม่ซ้ำกัน หากคุณกำหนดป้ายชื่อ DNS ทำให้เข้าถึงได้จากอินเทอร์เน็ตทันที

# Run an Nginx container accessible from the internet
az container create \
  --name my-nginx \
  --resource-group MyRG \
  --image nginx:latest \
  --cpu 1 \
  --memory 1 \
  --dns-name-label my-nginx-demo \
  --ports 80

# Access at: http://my-nginx-demo.<region>.azurecontainer.io

ตัวแปรสภาพแวดล้อมและค่าที่ปลอดภัย

ส่งการกำหนดค่าไปยังคอนเทนเนอร์ ACI โดยใช้ ตัวแปรสภาพแวดล้อม ที่ระบุขณะสร้าง สำหรับค่าที่ละเอียดอ่อน เช่น คีย์ API หรือรหัสผ่าน ให้ใช้ ตัวแปรสภาพแวดล้อมที่ปลอดภัย ซึ่งจะไม่แสดงในพอร์ทัล Azure หรือผลลัพธ์ของ CLI หลังการปรับใช้ เพื่อป้องกันการเปิดเผยโดยไม่ได้ตั้งใจในบันทึกหรือเส้นทางการตรวจสอบ ค่าที่ปลอดภัยยังคงเข้าถึงได้ภายในคอนเทนเนอร์ขณะทำงานในรูปตัวแปรสภาพแวดล้อมตามปกติ

# Pass regular and secure environment variables
az container create \
  --name my-app \
  --resource-group MyRG \
  --image mycontainerregistry.azurecr.io/myapp:v1.0 \
  --environment-variables APP_ENV=production \
  --secure-environment-variables \
    DATABASE_PASSWORD='super-secret-password' \
    API_KEY='my-api-key'

# View logs from the running container
az container logs --name my-app --resource-group MyRG

การเรียกเก็บเงินและการจัดสรรทรัพยากรของ ACI

ACI คิดค่าบริการเป็น วินาที ตามจำนวนคอร์ CPU และหน่วยความจำ GB ที่คุณจัดสรร โดยไม่มีระยะเวลาขั้นต่ำในการคิดค่าบริการ คุณจะจ่ายเฉพาะช่วงที่คอนเทนเนอร์กำลังทำงานเท่านั้น ทันทีที่คอนเทนเนอร์หยุดทำงาน การคิดค่าบริการก็จะหยุดลง ทำให้ ACI คุ้มค่าอย่างมากสำหรับเวิร์กโหลดที่มีอายุสั้น คุณสามารถจัดสรรคอร์ CPU ได้ตั้งแต่ 0.1 ถึง 4 คอร์ และหน่วยความจำตั้งแต่ 0.1 ถึง 16 GB ต่อกลุ่มคอนเทนเนอร์ ตามชุดค่าที่รองรับ

# Small: 0.5 CPU, 0.5 GB memory
az container create --name small-task --resource-group MyRG \
  --image my-batch-image:latest --cpu 0.5 --memory 0.5 \
  --restart-policy Never  # Don't restart after completion

# Large: 4 CPU, 16 GB memory for intensive tasks
az container create --name ml-inference --resource-group MyRG \
  --image ml-model:latest --cpu 4 --memory 16

นโยบายการเริ่มต้นใหม่

ACI รองรับ นโยบายการเริ่มต้นใหม่ 3 แบบเพื่อควบคุมพฤติกรรมของคอนเทนเนอร์หลังจากออกจากการทำงาน Always (ค่าเริ่มต้น) จะเริ่มต้นคอนเทนเนอร์ใหม่ทุกครั้งที่คอนเทนเนอร์ออกจากการทำงาน เหมาะสำหรับบริการที่ทำงานต่อเนื่อง Never จะเรียกใช้คอนเทนเนอร์เพียงครั้งเดียวแล้วปล่อยให้อยู่ในสถานะสิ้นสุด เหมาะสำหรับงานแบบชุด OnFailure จะเริ่มต้นใหม่เฉพาะเมื่อคอนเทนเนอร์ออกจากการทำงานด้วยรหัสการออกที่ไม่ใช่ศูนย์ เหมาะสำหรับรูปแบบการลองใหม่เมื่อเกิดข้อผิดพลาด

# Batch job: run once, never restart
az container create \
  --name data-processor \
  --resource-group MyRG \
  --image my-batch-image:latest \
  --restart-policy Never \
  --environment-variables BATCH_DATE=2025-01-01

# Check the container's final state
az container show \
  --name data-processor \
  --resource-group MyRG \
  --query '{state:instanceView.state, exitCode:instanceView.currentState.exitCode}'

กลุ่มคอนเทนเนอร์: การปรับใช้หลายคอนเทนเนอร์

กลุ่มคอนเทนเนอร์ คือชุดของคอนเทนเนอร์ที่ใช้วงจรการทำงาน เครือข่าย และพื้นที่จัดเก็บร่วมกัน ซึ่งคล้ายกับ Pod ของ Kubernetes คอนเทนเนอร์ในกลุ่มเดียวกันใช้ที่อยู่ IP และเนมสเปซพอร์ตร่วมกัน จึงสื่อสารกันผ่าน localhost ได้ รูปแบบที่พบได้ทั่วไปคือคอนเทนเนอร์แอปพลิเคชันหลักและคอนเทนเนอร์เสริม เช่น ตัวแทนบันทึกข้อมูลหรือพร็อกซีในกลุ่มเดียวกัน โดยกำหนดด้วยเทมเพลต YAML หรือ ARM

# multi-container.yaml
apiVersion: '2021-09-01'
location: eastus
name: my-container-group
properties:
  containers:
  - name: app
    properties:
      image: myapp:v1.0
      ports: [{port: 80}]
      resources: {requests: {cpu: 1, memoryInGb: 1}}
  - name: log-forwarder
    properties:
      image: fluent-bit:latest
      resources: {requests: {cpu: 0.5, memoryInGb: 0.5}}
  osType: Linux
  restartPolicy: Always
type: Microsoft.ContainerInstance/containerGroups

# Deploy from YAML
# az container create --resource-group MyRG --file multi-container.yaml

การเมานต์โวลุม: การผสานรวม Azure Files

คอนเทนเนอร์ ACI จะไม่มีสถานะเป็นค่าเริ่มต้น ข้อมูลที่เขียนลงระบบไฟล์ของคอนเทนเนอร์จะสูญหายเมื่อคอนเทนเนอร์เริ่มต้นใหม่ ให้เมานต์ ส่วนใช้ร่วมกันของ Azure Files เป็นโวลุมเพื่อคงข้อมูลไว้ระหว่างการเริ่มต้นคอนเทนเนอร์ใหม่ หรือแบ่งปันข้อมูลระหว่างคอนเทนเนอร์ในกลุ่มเดียวกัน ระบุชื่อบัญชีพื้นที่จัดเก็บ คีย์ และชื่อส่วนใช้ร่วมกันของไฟล์ขณะสร้าง Container instance

# Mount an Azure Files share for persistent storage
az container create \
  --name stateful-app \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --azure-file-volume-account-name mystorageaccount \
  --azure-file-volume-account-key '<storage-account-key>' \
  --azure-file-volume-share-name myfileshare \
  --azure-file-volume-mount-path /data

# Data written to /data persists in the Azure Files share

Container Instances ที่ใช้ GPU

ACI รองรับ GPU container instances (K80, V100) สำหรับเวิร์กโหลดการอนุมาน ML การประมวลผลวิดีโอ และการคำนวณทางวิทยาศาสตร์ Instance ที่ใช้ GPU มีให้บริการในบางภูมิภาคและต้องใช้คอนเทนเนอร์ Linux โดยคิดค่าบริการต่อ GPU/วินาที จึงประหยัดสำหรับสถานการณ์การอนุมานแบบเร่งด่วนที่คุณเริ่มต้นคอนเทนเนอร์ GPU เรียกใช้โมเดล แล้วปิดการทำงานทันที ซึ่งมีค่าใช้จ่ายถูกกว่า VM ที่ใช้ GPU โดยเฉพาะและทำงานตลอด 24 ชั่วโมงอย่างมาก

# Create a GPU-enabled container instance
az container create \
  --name gpu-inference \
  --resource-group MyRG \
  --image my-ml-model:latest \
  --gpu-count 1 \
  --gpu-sku V100 \
  --cpu 4 \
  --memory 16 \
  --os-type Linux

ACI กับเครือข่ายเสมือน

ปรับใช้กลุ่มคอนเทนเนอร์ ACI ลงใน ซับเน็ตเฉพาะภายใน VNet เพื่อให้มีที่อยู่ IP ส่วนตัวและสามารถเข้าถึงทรัพยากรอื่นที่เชื่อมต่อกับ VNet เช่น ฐานข้อมูลและ VMs ได้โดยไม่ต้องเปิดเผยต่ออินเทอร์เน็ต ACI ที่ผสานรวมกับ VNet ต้องใช้ซับเน็ตเฉพาะที่มีการมอบหมาย (มอบหมายให้กับ Microsoft.ContainerInstance/containerGroups) และไม่รองรับการกำหนด IP สาธารณะ

# Create an ACI container in a VNet
az container create \
  --name private-task \
  --resource-group MyRG \
  --image myapp:v1.0 \
  --vnet MyVNet \
  --subnet ContainerSubnet \
  --restart-policy Never

# The container gets a private IP from the subnet CIDR
# It can reach VNet resources (SQL, Redis, VMs) on private IPs

ACI ในฐานะโหนด Kubelet เสมือน

ACI ผสานรวมกับ AKS เป็น โหนดเสมือน ผ่านโครงการโอเพนซอร์ส Virtual Kubelet เมื่อคลัสเตอร์ AKS มีความต้องการใช้งานเพิ่มขึ้นอย่างรวดเร็วจนเกินความจุของโหนด VM แล้ว Kubernetes สามารถกำหนดเวลาให้ Pod ทำงานบนโหนด ACI เสมือนได้ โดยจะเริ่มต้น Container instances จริง วิธีนี้ช่วยให้เพิ่มขนาดแบบเร่งด่วนได้อย่างไม่จำกัดโดยไม่ต้องจัดเตรียมโหนด VM เพิ่มล่วงหน้า และคุณจะจ่ายเฉพาะค่าประมวลผล ACI ในช่วงที่มีการใช้งานเพิ่มขึ้นเท่านั้น

# Enable virtual nodes on an AKS cluster
az aks enable-addons \
  --name myAKSCluster \
  --resource-group MyRG \
  --addons virtual-node \
  --subnet-name VirtualNodeSubnet

# Schedule a burst pod on ACI via node selector
# spec:
#   nodeSelector:
#     kubernetes.io/role: agent
#     beta.kubernetes.io/os: linux
#     type: virtual-kubelet
#   tolerations:
#   - key: virtual-kubelet.io/provider
#     operator: Exists

ควรใช้ ACI, AKS หรือ App Service เมื่อใด

เลือกใช้ ACI สำหรับงานที่มีอายุสั้น งานแบบชุด ตัวแทนสร้าง CI และคอนเทนเนอร์ที่ใช้ครั้งเดียว ซึ่งไม่จำเป็นต้องมีภาระจาก Kubernetes เลือกใช้ AKS สำหรับไมโครเซอร์วิสที่ทำงานต่อเนื่องและมีหลายคอนเทนเนอร์ ซึ่งต้องใช้การค้นหาบริการ การตรวจสอบสถานะ การอัปเดตแบบทยอย และเครือข่ายของคลัสเตอร์ เลือกใช้ บริการแอป เมื่อคุณต้องการความสะดวกแบบ PaaS เช่น ช่องการปรับใช้ ใบรับรองที่มีการจัดการ และการยืนยันตัวตนในตัว โดยไม่ต้องจัดการเครือข่ายคอนเทนเนอร์ด้วยตนเอง

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Azure Container Instances เรียกใช้คอนเทนเนอร์ได้ภายในไม่กี่วินาทีโดยไม่ต้องจัดการเซิร์ฟเวอร์ คิดค่าบริการต่อวินาทีตาม CPU และหน่วยความจำ กลุ่มคอนเทนเนอร์ ช่วยให้คอนเทนเนอร์หลายรายการใช้เครือข่ายและพื้นที่จัดเก็บร่วมกันได้เหมือน Pod ของ Kubernetes และ นโยบายการเริ่มต้นใหม่ (Always, Never, OnFailure) ควบคุมวงจรการทำงานของคอนเทนเนอร์หลังออกจากการทำงาน ต่อไปเราจะสำรวจแนวคิด Kubernetes สำหรับ Azure

คำถามที่พบบ่อย

บทเรียน “Azure Container Instances” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Azure Container Instances” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Azure Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Azure Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Azure Container Instances”

เปิดใช้แอปพลิเคชันแบบคอนเทนเนอร์ได้ภายในไม่กี่วินาทีด้วย ACI โดยไม่ต้องจัดการเซิร์ฟเวอร์ กำหนดค่าตัวแปรสภาพแวดล้อมและการเมานต์โวลุม และทำความเข้าใจการคิดค่าบริการของ ACI คุณปฏิบัติ Azure Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Azure Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Azure Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “Azure Container Instances” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Azure Fundamentals นี้ได้ไหม

ได้ บทเรียน Azure Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Azure Container Registry
  2. Azure Container Instances
  3. แนวคิด Kubernetes สำหรับ Azure
  4. การปรับใช้ภาระงานบน AKS
← กลับไปที่ Azure Fundamentals