Szybki start: kompilowanie i uruchamianie obrazu kontenera przy użyciu zadań usługi Azure Container Registry

W tym przewodniku Szybki start użyjesz poleceń zadań usługi Azure Container Registry , aby szybko kompilować, wypychać i uruchamiać obraz kontenera platformy Docker natywnie na platformie Azure bez lokalnej instalacji platformy Docker. Usługa ACR Tasks to zestaw funkcji w usłudze Azure Container Registry, które ułatwiają zarządzanie obrazami kontenerów i modyfikowanie ich w całym cyklu życia kontenera. W tym przykładzie pokazano, jak odciążyć cykl tworzenia obrazu kontenera "inner-loop" do chmury przy użyciu kompilacji na żądanie przy użyciu lokalnego pliku Dockerfile.

Po wykonaniu tego przewodnika Szybki start zapoznaj się z bardziej zaawansowanymi funkcjami usługi ACR Tasks, korzystając z samouczków. Usługa ACR Tasks może automatyzować kompilacje obrazów na podstawie zatwierdzeń kodu lub aktualizacji obrazu podstawowego lub testować wiele kontenerów równolegle między innymi scenariuszami.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

  • Ten przewodnik Szybki start wymaga wersji 2.0.58 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

Tworzenie grupy zasobów

Jeśli jeszcze nie masz rejestru kontenerów, najpierw utwórz grupę zasobów za pomocą polecenia az group create . Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.

W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

az group create --name myResourceGroup --location eastus

Tworzenie rejestru kontenerów

Utwórz rejestr kontenerów przy użyciu polecenia az acr create . Nazwa rejestru musi być unikatowa w obrębie platformy Azure i może zawierać od 5 do 50 znaków alfanumerycznych. W poniższym przykładzie użyto polecenia mycontainerregistry008 . Zaktualizuj ją do unikatowej wartości.

az acr create --resource-group myResourceGroup \
  --name mycontainerregistry008 --sku Basic

W tym przykładzie tworzony jest rejestr podstawowy — opcja zoptymalizowana pod kątem kosztów dla deweloperów uczących się usługi Azure Container Registry. Aby uzyskać szczegółowe informacje na temat dostępnych warstw usług, zobacz Warstwy usług rejestru kontenerów.

Kompilowanie i wypychanie obrazu z pliku Dockerfile

Teraz użyj usługi Azure Container Registry, aby skompilować i wypchnąć obraz. Najpierw utwórz lokalny katalog roboczy, a następnie utwórz plik Dockerfile o nazwie Dockerfile z jednym wierszem: FROM mcr.microsoft.com/hello-world. Jest to prosty przykład tworzenia obrazu kontenera systemu Linux z obrazu hostowanego hello-world w usłudze Microsoft Container Registry. Możesz utworzyć własny standardowy plik Dockerfile i tworzyć obrazy dla innych platform. Jeśli pracujesz w powłoce bash, utwórz plik Dockerfile za pomocą następującego polecenia:

echo "FROM mcr.microsoft.com/hello-world" > Dockerfile

Uruchom polecenie az acr build, które kompiluje obraz i po pomyślnym skompilowania obrazu wypchnie go do rejestru. Poniższy przykład kompiluje i wypycha sample/hello-world:v1 obraz. Na . końcu polecenia ustawia lokalizację pliku Dockerfile, w tym przypadku bieżący katalog.

az acr build --image sample/hello-world:v1 \
  --registry mycontainerregistry008 \
  --file Dockerfile . 

Dane wyjściowe z pomyślnej kompilacji i wypychania są podobne do następujących:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/build_archive_b0bc1e5d361b44f0833xxxx41b78c24e.tar.gz'...
Sending context (1.856 KiB) to registry: mycontainerregistry008...
Queued a build with ID: ca8
Waiting for agent...
2019/03/18 21:56:57 Using acb_vol_4c7ffa31-c862-4be3-xxxx-ab8e615c55c4 as the home volume
2019/03/18 21:56:57 Setting up Docker configuration...
2019/03/18 21:56:58 Successfully set up Docker configuration
2019/03/18 21:56:58 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/18 21:56:59 Executing step ID: build. Working directory: '', Network: ''
2019/03/18 21:56:59 Obtaining source code and scanning for dependencies...
2019/03/18 21:57:00 Successfully obtained source code and scanned for dependencies
2019/03/18 21:57:00 Launching container with name: build
Sending build context to Docker daemon  13.82kB
Step 1/1 : FROM mcr.microsoft.com/hello-world
latest: Pulling from hello-world
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586fxxxx21577a99efb77324b0fe535
Successfully built fce289e99eb9
Successfully tagged mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:01 Successfully executed container: build
2019/03/18 21:57:01 Executing step ID: push. Working directory: '', Network: ''
2019/03/18 21:57:01 Pushing image: mycontainerregistry008.azurecr.io/sample/hello-world:v1, attempt 1
The push refers to repository [mycontainerregistry008.azurecr.io/sample/hello-world]
af0b15c8625b: Preparing
af0b15c8625b: Layer already exists
v1: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
2019/03/18 21:57:03 Successfully pushed image: mycontainerregistry008.azurecr.io/sample/hello-world:v1
2019/03/18 21:57:03 Step ID: build marked as successful (elapsed time in seconds: 2.543040)
2019/03/18 21:57:03 Populating digests for step ID: build...
2019/03/18 21:57:05 Successfully populated digests for step ID: build
2019/03/18 21:57:05 Step ID: push marked as successful (elapsed time in seconds: 1.473581)
2019/03/18 21:57:05 The following dependencies were found:
2019/03/18 21:57:05
- image:
    registry: mycontainerregistry008.azurecr.io
    repository: sample/hello-world
    tag: v1
    digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
  runtime-dependency:
    registry: registry.hub.docker.com
    repository: library/hello-world
    tag: v1
    digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
  git: {}

Run ID: ca8 was successful after 10s

Uruchamianie obrazu

Teraz szybko uruchom skompilowany i wypchnięty obraz do rejestru. W tym miejscu użyjesz polecenia az acr run , aby uruchomić polecenie kontenera. W przepływie pracy tworzenia kontenerów może to być krok weryfikacji przed wdrożeniem obrazu lub możesz dołączyć polecenie w wieloetapowym pliku YAML.

W poniższym przykładzie użyto $Registry do określenia punktu końcowego rejestru, w którym jest uruchamiane polecenie:

az acr run --registry mycontainerregistry008 \
  --cmd '$Registry/sample/hello-world:v1' /dev/null

Parametr cmd w tym przykładzie uruchamia kontener w konfiguracji domyślnej, ale cmd obsługuje dodatkowe docker run parametry, a nawet inne docker polecenia.

Dane wyjściowe będą podobne do następujących:

Packing source code into tar to upload...
Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
Sending context (1.855 KiB) to registry: mycontainerre...
Queued a run with ID: cab
Waiting for an agent...
2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network
2019/03/19 19:01:53 Setting up Docker configuration...
2019/03/19 19:01:54 Successfully set up Docker configuration
2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2019/03/19 19:01:55 Launching container with name: acb_step_0

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

2019/03/19 19:01:56 Successfully executed container: acb_step_0
2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)

Run ID: cab was successful after 6s

Czyszczenie zasobów

Gdy grupa zasobów, rejestr kontenerów i przechowywane w nim obrazy kontenerów nie będą już potrzebne, można je usunąć za pomocą polecenia az group delete.

az group delete --name myResourceGroup

Następne kroki

W tym przewodniku Szybki start użyto funkcji usługi ACR Tasks do szybkiego kompilowania, wypychania i uruchamiania obrazu kontenera platformy Docker natywnie na platformie Azure bez lokalnej instalacji platformy Docker. Przejdź do samouczków usługi Azure Container Registry Tasks, aby dowiedzieć się więcej o używaniu usługi ACR Tasks do automatyzowania kompilacji i aktualizacji obrazów.