0Pricing
Azure Fundamentals · Lekcja

Azure Container Instances

Uruchamiaj skonteneryzowane aplikacje w ciągu kilku sekund za pomocą ACI bez zarządzania serwerami, konfiguruj zmienne środowiskowe i montowania woluminów oraz poznaj sposób naliczania opłat za ACI.

Azure Container Instances to bezpłatna lekcja Azure Fundamentals na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Azure Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.

Czym jest Azure Container Instances?

Azure Container Instances (ACI) to najszybszy sposób uruchamiania skonteneryzowanych obciążeń na platformie Azure bez zarządzania serwerami ani orkiestratorami. Wystarczy podać obraz kontenera, a Azure uruchomi go w ciągu kilku sekund na współdzielonej infrastrukturze obsługującej wielu dzierżawców. ACI doskonale nadaje się do krótkotrwałych zadań, zadań wsadowych, agentów kompilacji i obciążeń sterowanych zdarzeniami, w przypadku których uruchamianie pełnego klastra Kubernetes byłoby niepotrzebnym narzutem.

Tworzenie wystąpienia kontenera

Uruchom kontener ACI za pomocą pojedynczego polecenia az container create. Określ obraz, grupę zasobów, liczbę procesorów CPU i pamięć. ACI pobiera obraz, przydziela zasoby i uruchamia kontener — zazwyczaj w ciągu 5–10 sekund. Każde wystąpienie kontenera otrzymuje unikatową kwalifikowaną nazwę domeny (FQDN), jeśli przypiszesz etykietę nazwy DNS, dzięki czemu staje się od razu dostępne z internetu.

# 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

Zmienne środowiskowe i wartości zabezpieczone

Przekazuj konfigurację do kontenerów ACI za pomocą zmiennych środowiskowych określanych podczas tworzenia. W przypadku poufnych wartości, takich jak klucze API lub hasła, używaj zabezpieczonych zmiennych środowiskowych — po wdrożeniu nie są one wyświetlane w portalu Azure ani w danych wyjściowych interfejsu CLI, co zapobiega ich przypadkowemu ujawnieniu w dziennikach lub ścieżkach audytu. Zabezpieczone wartości są nadal dostępne wewnątrz kontenera podczas działania jako zwykłe zmienne środowiskowe.

# 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

Rozliczenia i przydzielanie zasobów ACI

Usługa ACI rozlicza użytkownika za sekundę na podstawie przydzielonej liczby rdzeni CPU i pamięci w GB, bez minimalnego okresu rozliczeniowego. Opłaty są naliczane tylko podczas działania kontenera — w chwili jego zatrzymania naliczanie opłat ustaje. Dzięki temu ACI jest wyjątkowo opłacalne w przypadku krótkotrwałych obciążeń. Dla każdej grupy kontenerów można przydzielić od 0,1 do 4 rdzeni CPU oraz od 0,1 do 16 GB pamięci, w obsługiwanych kombinacjach.

# 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

Zasady ponownego uruchamiania

ACI obsługuje trzy zasady ponownego uruchamiania, które określają zachowanie kontenera po jego zakończeniu. Always (domyślnie) uruchamia kontener ponownie za każdym razem, gdy ten się zakończy — jest to odpowiednie w przypadku usług działających długotrwale. Never uruchamia kontener tylko raz i pozostawia go w stanie zakończonym — sprawdza się w przypadku zadań wsadowych. OnFailure uruchamia kontener ponownie tylko wtedy, gdy zakończy się on kodem wyjścia różnym od zera — jest przydatne w schematach ponawiania po błędzie.

# 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}'

Grupy kontenerów: wdrożenia wielokontenerowe

Grupa kontenerów to zbiór kontenerów współdzielących cykl życia, sieć i magazyn — podobnie jak pod Kubernetes. Kontenery w tej samej grupie współdzielą lokalny adres IP i przestrzeń nazw portów, dzięki czemu mogą komunikować się za pośrednictwem localhost. Typowym rozwiązaniem jest umieszczenie w tej samej grupie głównego kontenera aplikacji i kontenera sidecar (np. agenta rejestrowania lub serwera proxy), zdefiniowanych za pomocą szablonu YAML lub 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

Montowanie woluminów: integracja z Azure Files

Kontenery ACI są domyślnie bezstanowe — dane zapisane w systemie plików kontenera zostaną utracone po jego ponownym uruchomieniu. Zamontuj udział Azure Files jako wolumin, aby zachować dane między ponownymi uruchomieniami kontenera lub udostępniać je między kontenerami w tej samej grupie. Podczas tworzenia wystąpienia kontenera określ nazwę konta magazynu, klucz i nazwę udziału plików.

# 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

Wystąpienia kontenerów z procesorem GPU

ACI obsługuje wystąpienia kontenerów z procesorem GPU (K80, V100) na potrzeby wnioskowania ML, przetwarzania wideo i obliczeń naukowych. Wystąpienia GPU są dostępne w wybranych regionach i wymagają kontenerów z systemem Linux. Są rozliczane za każdą jednostkę GPU i sekundę, dzięki czemu są opłacalne w scenariuszach wnioskowania skokowego, w których uruchamia się kontener GPU, wykonuje model, a następnie natychmiast go usuwa — jest to znacznie tańsze niż dedykowana maszyna wirtualna z GPU działająca przez całą dobę.

# 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 z siecią wirtualną

Wdrażaj grupy kontenerów ACI w dedykowanej podsieci w ramach sieci VNet, aby nadać im prywatne adresy IP i umożliwić im dostęp do innych zasobów połączonych z siecią VNet (baz danych, maszyn wirtualnych) bez wystawiania ich do internetu. ACI z integracją z siecią VNet wymaga dedykowanej, delegowanej podsieci (delegowanej do Microsoft.ContainerInstance/containerGroups) i nie obsługuje przypisywania publicznych adresów 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 jako węzeł Virtual Kubelet

ACI integruje się z AKS jako węzeł wirtualny za pośrednictwem projektu open source Virtual Kubelet. Gdy klaster AKS doświadcza skokowego wzrostu zapotrzebowania przekraczającego możliwości jego węzłów maszyn wirtualnych, Kubernetes może zaplanować pody na wirtualnym węźle ACI, uruchamiając rzeczywiste wystąpienia kontenerów ACI. Zapewnia to nieograniczone skalowanie skokowe bez wcześniejszego aprowizowania dodatkowych węzłów maszyn wirtualnych, a opłaty za moc obliczeniową ACI są naliczane tylko w okresie zwiększonego obciążenia.

# 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

Kiedy używać ACI, AKS i App Service

Wybierz ACI w przypadku krótkotrwałych zadań, zadań wsadowych, agentów kompilacji CI i jednorazowych kontenerów, gdy narzut związany z Kubernetes nie jest potrzebny. Wybierz AKS w przypadku długotrwałych mikrousług wielokontenerowych wymagających wykrywania usług, kontroli kondycji, aktualizacji kroczących i sieci klastrowej. Wybierz App Service, gdy chcesz korzystać z udogodnień PaaS (slotów wdrażania, zarządzanych certyfikatów i wbudowanego uwierzytelniania) bez samodzielnego zarządzania siecią kontenerów.

Szybkie sprawdzenie

Sprawdź swoją znajomość zagadnień Microsoft Azure Fundamentals (AZ-900) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji dowiedział się Pan / dowiedziała się Pani, że Azure Container Instances uruchamia kontenery w ciągu kilku sekund bez zarządzania serwerami, a opłaty są naliczane za każdą sekundę wykorzystania CPU i pamięci; grupy kontenerów umożliwiają wielu kontenerom współdzielenie sieci i magazynu podobnie jak w podzie Kubernetes, a zasady ponownego uruchamiania (Always, Never, OnFailure) kontrolują cykl życia kontenera po jego zakończeniu. W następnej części omówimy koncepcje Kubernetes dla platformy Azure.

Często zadawane pytania

Czy lekcja „Azure Container Instances” jest bezpłatna?

Tak — pełny tekst „Azure Container Instances” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Azure Fundamentals, przejdź na CoddyKit PRO. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Azure Container Instances”?

Uruchamiaj skonteneryzowane aplikacje w ciągu kilku sekund za pomocą ACI bez zarządzania serwerami, konfiguruj zmienne środowiskowe i montowania woluminów oraz poznaj sposób naliczania opłat za ACI. Ćwiczysz Azure Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Azure Fundamentals?

Nie wymagamy żadnego doświadczenia. Azure Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Azure Container Instances”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Azure Fundamentals?

Tak. Każda lekcja Azure Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Azure Container Registry
  2. Azure Container Instances
  3. Podstawy Kubernetes na platformie Azure
  4. Wdrażanie obciążeń w AKS
← Powrót do Azure Fundamentals