Tutorial: Criar imagens de contentor num cluster do Service Fabric do Linux

Este tutorial faz parte de uma série de tutoriais que demonstra como utilizar contentores num cluster do Linux Service Fabric. Neste tutorial, uma aplicação de contentores múltiplos é preparada para utilização com o Service Fabric. Em tutoriais posteriores, estas imagens serão utilizadas como parte de uma aplicação do Service Fabric. Neste tutorial, ficará a saber como:

  • Clonar a origem de aplicação a partir do GitHub
  • Criar uma imagem de contentor a partir da origem de aplicação
  • Implementar uma instância do Azure Container Registry (ACR)
  • Marcar uma imagem de contentor para o ACR
  • Carregar os ficheiros de imagem para o ACR

Nesta série de tutoriais, ficará a saber como:

Pré-requisitos

  • Configuração de ambiente de desenvolvimento do Linux para o Service Fabric. Siga as instruções aqui para configurar o seu ambiente do Linux.
  • Este tutorial requer a execução da versão 2.0.4 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.
  • Além disso, requer que tenha uma subscrição do Azure disponível. Para mais informações sobre uma versão de avaliação gratuita, clique aqui.

Obter o código da aplicação

A aplicação de exemplo utilizada neste tutorial é uma aplicação de votos. A aplicação consiste num componente Web front-end e uma instância do Redis em back-end. Os componentes estão agrupados em imagens de contentores.

Utilize o git para transferir uma cópia da aplicação para o seu ambiente de desenvolvimento.

git clone https://github.com/Azure-Samples/service-fabric-containers.git

cd service-fabric-containers/Linux/container-tutorial/

A solução contém duas pastas e um ficheiro "docker-compose.yml". A pasta "azure-vote" contém o serviço front-end Python, juntamente com o Dockerfile utilizado para criar a imagem. O diretório "Voting" contém o pacote de aplicação do Service Fabric implementado para o cluster. Estes diretórios contêm os recursos necessários para este tutorial.

Criar imagens de contentor

No diretório azure-vote, execute o seguinte comando para criar a imagem para o componente Web do front-end. Este comando utiliza o Dockerfile neste diretório para criar a imagem.

docker build -t azure-vote-front .

Nota

Se a permissão lhe é negada, então siga esta documentação sobre como utilizar o docker sem sudo.

Este comando pode demorar algum tempo, uma vez que todas as dependências necessárias têm de ser obtidas do Docker Hub. Quando concluído, use o comando docker images para ver a imagem azure-vote-front que você acabou de criar.

docker images

Implementar o Azure Container Registry

Primeiro, execute o comando az login para entrar na sua conta do Azure.

az login

Em seguida, utilize o comando az account para mudar a sua subscrição de forma a criar o registo de contentor do Azure. Tem de introduzir o ID de subscrição da sua subscrição do Azure em vez de <subscription_id>.

az account set --subscription <subscription_id>

Ao implementar um Azure Container Registry, tem de começar por obter um grupo de recursos. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

Crie um grupo de recursos com o comando az group create. Neste exemplo, é criado um grupo de recursos chamado myResourceGroup na região westus.

az group create --name <myResourceGroup> --location westus

Crie um registo de contentor do Azure com o comando az acr create. Substitua <acrName> pelo nome do registro de contêiner que você deseja criar em sua assinatura. O nome tem de ser alfanumérico e único.

az acr create --resource-group <myResourceGroup> --name <acrName> --sku Basic --admin-enabled true

Em todo o resto deste tutorial, utilizamos "acrName" como um marcador de posição para o nome do registo de contentor que escolheu. Anote este valor.

Inicie sessão no seu registo de contentores

Faça login na sua instância ACR antes de enviar imagens para ela. Utilize o comando az acr login para concluir a operação. Forneça o nome exclusivo dado ao registo de contentor quando este foi criado.

az acr login --name <acrName>

O comando devolve uma mensagem "Início de sessão com êxito" depois de concluir.

Marcar imagens de contentor

Cada imagem de contentor tem de ser marcada com o nome loginServer do registo. Esta etiqueta é utilizada para encaminhamento ao enviar imagens de contentor para um registo de imagem.

Para ver uma lista das imagens atuais, utilize o comando docker images.

docker images

Saída:

REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
azure-vote-front             latest              052c549a75bf        About a minute ago   913MB

Para obter o nome loginServer, execute o seguinte comando:

az acr show --name <acrName> --query loginServer --output table

Isto dá origem a uma tabela com os seguintes resultados. Este resultado será utilizado para identificar a sua imagem azure-vote-front antes de enviá-la para o registo de contentor no próximo passo.

Result
------------------
<acrName>.azurecr.io

Agora, marque a imagem azure-vote-front com o loginServer do seu registo de contentor. Além disso, adicione :v1 ao final do nome da imagem. Esta etiqueta identifica a versão da imagem.

docker tag azure-vote-front <acrName>.azurecr.io/azure-vote-front:v1

Depois de marcada, execute "docker images" para verificar a operação.

Saída:

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front                       latest              052c549a75bf        23 minutes ago      913MB
<acrName>.azurecr.io/azure-vote-front  v1                  052c549a75bf        23 minutes ago      913MB

Enviar imagens para o registo

Envie a imagem azure-vote-front para o registo.

Utilizando o seguinte exemplo, substitua o nome loginServer do ACR pelo loginServer do seu ambiente.

docker push <acrName>.azurecr.io/azure-vote-front:v1

Os comandos de envio do docker demoram alguns minutos a concluir.

Listar imagens no registo

Para devolver uma lista de imagens que foram enviadas para o seu registo de contentor do Azure, utilize o comando az acr repository list. Atualize o comando com o nome de instância do ACR.

az acr repository list --name <acrName> --output table

Saída:

Result
----------------
azure-vote-front

Ao concluir o tutorial, a imagem de contentor foi armazenada numa instância privada do Azure Container Registry. Esta imagem é implementada do ACR para um cluster do Service Fabric em tutoriais posteriores.

Próximos passos

Neste tutorial, um aplicativo foi extraído do GitHub e imagens de contêiner foram criadas e enviadas por push para um registro. Foram efetuados os seguintes passos:

  • Clonar a origem de aplicação a partir do GitHub
  • Criar uma imagem de contentor a partir da origem de aplicação
  • Implementar uma instância do Azure Container Registry (ACR)
  • Marcar uma imagem de contentor para o ACR
  • Carregar os ficheiros de imagem para o ACR

Avance para o próximo tutorial para saber mais sobre agrupar contentores numa aplicação do Service Fabric através do Yeoman.