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

Azure Container Registry

สร้างและพุชอิมเมจ Docker ไปยัง Azure Container Registry ส่วนตัว จัดการการเข้าถึงด้วยการกำหนดบทบาท และทำให้การสร้างอิมเมจเป็นอัตโนมัติด้วย ACR Tasks

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

Azure Container Registry คืออะไร

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

ระดับบริการ ACR

ACR มีระดับบริการสามระดับ Basic ปรับค่าใช้จ่ายให้เหมาะกับการเรียนรู้และการพัฒนาที่มีปริมาณงานต่ำ โดยมีพื้นที่จัดเก็บ 10 GB และรองรับเว็บฮุกอย่างจำกัด Standard เพิ่มความสามารถในการทำซ้ำข้ามภูมิภาคและเพิ่มปริมาณงาน เหมาะสำหรับเวิร์กโหลดจริงส่วนใหญ่ Premium มีการทำซ้ำข้ามภูมิภาค ความน่าเชื่อถือของเนื้อหา ลิงก์ส่วนตัว คีย์ที่ลูกค้าจัดการเอง และแบนด์วิดท์สูงสุด จึงจำเป็นสำหรับข้อกำหนดด้านความปลอดภัยระดับองค์กร

# Create a Premium ACR in East US
az acr create \
  --name mycontainerregistry \
  --resource-group MyRG \
  --location eastus \
  --sku Premium

# List ACR instances in the subscription
az acr list --query '[].{name:name, sku:sku.name, loginServer:loginServer}' -o table

การพุชอิมเมจไปยัง ACR

หากต้องการพุชอิมเมจ Docker ไปยัง ACR ให้ตรวจสอบสิทธิ์ไคลเอ็นต์ Docker ติดแท็กอิมเมจภายในเครื่องด้วยชื่อโฮสต์ของเซิร์ฟเวอร์การเข้าสู่ระบบ ACR แล้วจึงพุช URL ของเซิร์ฟเวอร์การเข้าสู่ระบบ ACR มีรูปแบบ <registryname>.azurecr.io การตรวจสอบสิทธิ์จะใช้ข้อมูลประจำตัว Azure AD ผ่าน az acr login (สำหรับการใช้งานแบบโต้ตอบ) หรือใช้รหัสผ่านผู้ดูแลระบบ ACR หรือ Service Principal สำหรับไปป์ไลน์อัตโนมัติ

# Authenticate to ACR
az acr login --name mycontainerregistry

# Tag a local image for ACR
docker tag myapp:latest mycontainerregistry.azurecr.io/myapp:v1.0

# Push the image
docker push mycontainerregistry.azurecr.io/myapp:v1.0

# List images in the registry
az acr repository list --name mycontainerregistry -o table
az acr repository show-tags --name mycontainerregistry --repository myapp

ACR Tasks: การสร้างบนคลาวด์

ACR Tasks ช่วยให้คุณสร้างอิมเมจ Docker บนคลาวด์ได้โดยไม่ต้องใช้ดีมอน Docker ภายในเครื่อง งานด่วน (az acr build) จะส่งบริบทการสร้างไปยัง ACR และเรียกใช้ Dockerfile จากระยะไกล จากนั้นสร้างอิมเมจที่จัดเก็บไว้โดยตรงในรีจิสทรี งานตามกำหนดเวลาหรืองานที่ทำงานตามทริกเกอร์สามารถสร้างอิมเมจใหม่โดยอัตโนมัติเมื่ออิมเมจฐานได้รับการอัปเดต หรือเมื่อมีการคอมมิตโค้ดไปยัง GitHub ทำให้มีไปป์ไลน์ CI ของคอนเทนเนอร์แบบครบวงจรโดยไม่ต้องใช้เอเจนต์การสร้างแยกต่างหาก

# Quick task: build and push without local Docker
az acr build \
  --registry mycontainerregistry \
  --image myapp:v1.0 \
  . # build context (current directory with Dockerfile)

# Define a multi-step ACR Task triggered on commit
az acr task create \
  --name buildAndTest \
  --registry mycontainerregistry \
  --context https://github.com/myorg/myrepo.git \
  --file acr-task.yaml \
  --git-access-token <GITHUB_PAT>

การควบคุมการเข้าถึงด้วย RBAC

ACR ผสานรวมกับ Azure RBAC เพื่อให้ควบคุมการเข้าถึงได้อย่างละเอียด บทบาท ACR ในตัวประกอบด้วย AcrPull (ดึงอิมเมจเท่านั้น — สำหรับบริการปรับใช้), AcrPush (ดึงและพุช — สำหรับไปป์ไลน์ CI/CD) และ AcrDelete (จัดการแท็กอิมเมจ) มอบหมายบทบาท AcrPull ให้ข้อมูลประจำตัวที่มีการจัดการของ AKS หรือ App Service เพื่อให้คอนเทนเนอร์ดึงอิมเมจได้โดยไม่ต้องจัดเก็บข้อมูลประจำตัวไว้ที่ใด

# Grant AKS cluster's managed identity the AcrPull role
ACR_ID=$(az acr show --name mycontainerregistry --resource-group MyRG --query id -o tsv)
AKS_IDENTITY=$(az aks show --name myAKSCluster --resource-group MyRG \
  --query identityProfile.kubeletidentity.objectId -o tsv)

az role assignment create \
  --assignee $AKS_IDENTITY \
  --role AcrPull \
  --scope $ACR_ID

การทำซ้ำข้ามภูมิภาคสำหรับการปรับใช้ทั่วโลก

การทำซ้ำข้ามภูมิภาค (ระดับ Premium) จะทำซ้ำรีจิสทรีของคุณไปยังภูมิภาค Azure หลายแห่ง เมื่อ AKS หรือ ACI ในภูมิภาคหนึ่งดึงอิมเมจ ระบบจะอ่านจากแบบจำลองที่อยู่ใกล้ที่สุดแทนรีจิสทรีระยะไกล จึงลดเวลาแฝงและค่าใช้จ่ายการรับส่งข้อมูลขาออก การทำซ้ำทำงานโดยโปร่งใส โดย URI ของอิมเมจเดียวกันใช้ได้ทั่วโลก และ ACR จะกำหนดเส้นทางคำขอดึงไปยังแบบจำลองที่อยู่ใกล้ที่สุดทางภูมิศาสตร์โดยอัตโนมัติ

# Add a geo-replication to West Europe
az acr replication create \
  --name westeurope \
  --registry mycontainerregistry \
  --location westeurope

# List all replicas
az acr replication list \
  --registry mycontainerregistry \
  --query '[].{name:name, location:location, status:provisioningState}' -o table

ความน่าเชื่อถือของเนื้อหาและการลงนามอิมเมจ

ความน่าเชื่อถือของเนื้อหา (ระดับ Premium) ใช้ Docker Notary เพื่อให้มั่นใจว่าสามารถดึงได้เฉพาะอิมเมจที่ลงนามจากรีจิสทรีเท่านั้น เมื่อเปิดใช้ความน่าเชื่อถือของเนื้อหาบน ACR อิมเมจที่ไม่ได้ลงนามจะถูกปฏิเสธ การลงนามจะดำเนินการในไปป์ไลน์ CI โดยใช้ชุดเครื่องมือ Docker Content Trust และคู่คีย์ที่เชื่อถือได้ วิธีนี้ช่วยป้องกันการโจมตีห่วงโซ่อุปทานที่อิมเมจอันตรายถูกพุชและนำไปปรับใช้ในระบบจริง

# Enable content trust on the registry
az acr config content-trust update \
  --registry mycontainerregistry \
  --status enabled

# Sign an image when pushing (DOCKER_CONTENT_TRUST env var)
# export DOCKER_CONTENT_TRUST=1
# docker push mycontainerregistry.azurecr.io/myapp:v1.0
# (Docker prompts for signing key passphrase)

การสแกนช่องโหว่ด้วย Defender

เปิดใช้งาน Microsoft Defender for Containers เพื่อสแกนอิมเมจทุกอิมเมจที่พุชไปยัง ACR โดยอัตโนมัติ สำหรับช่องโหว่ที่ทราบแล้วในชั้นระบบปฏิบัติการและชั้นแอปพลิเคชัน (CVE) Defender จะสร้างรายงานที่แสดงรายการช่องโหว่ตามระดับความรุนแรง (วิกฤต สูง ปานกลาง ต่ำ) และให้คำแนะนำในการแก้ไข คุณสามารถกำหนดนโยบายเพื่อบล็อกการปรับใช้อิมเมจที่มีช่องโหว่ระดับวิกฤตไปยังคลัสเตอร์ AKS ผ่านการผสานรวมกับ Azure Policy ได้

# Enable Defender for Containers on the subscription
az security pricing create \
  --name Containers \
  --tier Standard

# View vulnerability assessment results
az security assessment list \
  --query "[?contains(displayName, 'Container')].{name:displayName, status:status.code}" \
  -o table

ปลายทางส่วนตัวสำหรับ ACR

เพื่อความปลอดภัยสูงสุด ให้ปิดการเข้าถึงเครือข่ายสาธารณะของ ACR และเชื่อมต่อกับ ACR ผ่าน ปลายทางส่วนตัวภายใน VNet ของคุณเท่านั้น วิธีนี้ช่วยให้มั่นใจว่าอิมเมจคอนเทนเนอร์จะไม่ถูกถ่ายโอนผ่านอินเทอร์เน็ตสาธารณะ โดยการดึงทั้งหมดจะดำเนินการผ่านโครงข่ายส่วนตัวของ Azure กำหนดค่า โซน DNS ส่วนตัว (privatelink.azurecr.io) เพื่อแปลงชื่อโฮสต์ของรีจิสทรีเป็นที่อยู่ IP ส่วนตัวภายใน VNet ของคุณ

# Create a private endpoint for ACR
az network private-endpoint create \
  --name acr-private-endpoint \
  --resource-group MyRG \
  --vnet-name MyVNet \
  --subnet PrivateEndpointSubnet \
  --private-connection-resource-id \
    $(az acr show --name mycontainerregistry --query id -o tsv) \
  --group-id registry \
  --connection-name acrConnection

# Disable public access
az acr update \
  --name mycontainerregistry \
  --public-network-enabled false

การจัดการวงจรการใช้งาน: การลบอิมเมจเก่า

หากไม่มีการจัดการวงจรการใช้งาน รีจิสทรีคอนเทนเนอร์จะสะสมแท็กอิมเมจเก่าหลายพันรายการและใช้พื้นที่จัดเก็บราคาแพง ใช้งาน งานล้าง ACR (งานตามตัวจับเวลาในตัว) เพื่อลบแมนนิเฟสต์และแท็กที่ไม่มีแท็กซึ่งเก่ากว่าระยะเวลาที่กำหนด เรียกใช้การล้างตามกำหนดเวลาโดยใช้ az acr task create พร้อมคำสั่ง acr purge โดยระบุรีโพซิทอรีที่ต้องการและเก็บแท็กล่าสุดไว้เป็นจำนวนขั้นต่ำ

# Create a scheduled purge task: delete tags older than 30d
az acr task create \
  --name scheduledPurge \
  --registry mycontainerregistry \
  --cmd 'acr purge --filter myapp:.*  --ago 30d --keep 5 --untagged' \
  --schedule '0 1 * * *' \
  --context /dev/null

การผสานรวม ACR กับ AKS

วิธีที่ง่ายที่สุดในการเชื่อมต่อ AKS กับ ACR คือใช้คำสั่ง az aks update --attach-acr ซึ่งจะมอบบทบาท AcrPull ให้กับข้อมูลประจำตัวที่มีการจัดการของ AKS โดยอัตโนมัติ หลังจากแนบแล้ว ข้อกำหนดของ Pod ใน Kubernetes จะอ้างอิงอิมเมจโดยใช้ชื่อโฮสต์ ACR แบบเต็มเท่านั้น โดยไม่จำเป็นต้องใช้ imagePullSecrets เนื่องจาก AKS ใช้ข้อมูลประจำตัวที่มีการจัดการเพื่อยืนยันตัวตนอย่างโปร่งใสในระดับโหนด

# Attach ACR to an existing AKS cluster
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --attach-acr mycontainerregistry

# Now pods can use ACR images without imagePullSecrets
# Example pod spec:
# spec:
#   containers:
#   - name: myapp
#     image: mycontainerregistry.azurecr.io/myapp:v1.0

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

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

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า Azure Container Registry (ACR) คือรีจิสทรีส่วนตัวที่มีการจัดการสำหรับจัดเก็บอิมเมจ Docker, ACR Tasks ช่วยให้สร้างอิมเมจบนคลาวด์ได้โดยไม่ต้องใช้ Docker daemon ภายในเครื่อง และ RBAC roles (AcrPull, AcrPush) ใช้ควบคุมการเข้าถึงสำหรับบริการการปรับใช้และ pipeline ของ CI/CD ต่อไปเราจะสำรวจ Azure Container Instances

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

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

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

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

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

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

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

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

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

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

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

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

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