No Azure, como executo um contêiner do Docker de curta duração em uma agenda?


12

Eu tenho um script de shell Unix bastante simples empacotado em um contêiner Alpine Linux Docker hospedado em um registro de contêiner do Azure. Uma VM executa esse script com cron:

docker login <snip>
docker pull example.com/bar:latest
docker run  example.com/bar:latest

Posso ficar sem a VM e usar os serviços do Azure, talvez com algum tipo de agendador executando isso em uma Instância de Contêiner do Azure?

Minha motivação não é querer manter e pagar pela VM.

Respostas:


10

Instâncias de Contêiner do Azure (ACI) podem ser uma boa opção, como você sugere. Isso permite que você execute um contêiner diretamente no Azure, sem precisar gerenciar uma VM, com cobrança por segundo pelo tempo em que o contêiner é usado.

Embora uma das demos desse blog mencione o Kubernetes, a idéia da ACI é que você pode criar um contêiner por meio da CLI do Azure az container create, assim como na estação de trabalho local docker create.

Para criar o contêiner, você pode usar a CLI do Azure ( azcomando, consulte os documentos de início rápido ) ou o Shell de Nuvem do Azure.

Você precisaria criar / executar o contêiner em um agendamento de outro lugar - o Azure Functions pode ser um bom local para executar o comando "container create" a partir de uma função agendada . Isso suporta bash, PowerShell e outros idiomas - todos em execução no Windows.

Se você deseja continuar usando contêineres do Docker sem executar VMs ou aprender o Kubernetes, essa pode ser uma boa opção.

Como alternativa, você pode mover todo o seu código para o Azure Functions, mas essa é uma decisão maior.

Atualização: janeiro de 2019 - Os Aplicativos Lógicos do Azure também podem ser usados ​​para executar tarefas agendadas .


Eu não sabia que poderia usar o PowerShell ou o Bash for Azure Functions! Obrigado
Sijmen Mulder

Sim, você pode executar qualquer executável do Azure Functions e o bash é explicitamente mencionado neste documento de visão geral . Para chamar os módulos do PowerShell, consulte este blog .
RichVel

É comum usar funções de nuvem como o Azure Functions, AWS Lambda etc. para executar scripts de instalação que configuram serviços em nuvem (por exemplo, configurar um novo ambiente em nuvem). Portanto, você pode esperar que todos os serviços e estruturas sem servidor suportem a execução do bash ou similar. Tradicionalmente, a primeira VM que você configurava era um servidor de "host de controle" a ser usado como local para executar toda a configuração de todos os ambientes. Ficar sem servidor para executar todos esses scripts significa que não há host para pagar. Um servidor de controle, se hackeado, vaza um mapa de seus ambientes, scripts antigos e possivelmente senhas em cache. O bash sem servidor é mais seguro.
simbo1905 4/01/19

Não é o caso de todos os serviços FaaS (sem servidor) suportarem o bash. De fato, o AWS Lambda oferece suporte apenas ao bash via Layers personalizadas, um recurso adicionado no final de 2018 - você pode usar essa camada de código aberto para simplificar a execução do bash. Geralmente, os serviços sem servidor / FaaS oferecem suporte a idiomas específicos, com alguns provedores permitindo maneiras de estender isso - por exemplo, a AWS possui Layers e o Google possui um serviço FaaS que permite a execução de qualquer contêiner Docker.
RichVel

Para simplificar, se você não quiser usar Layers - você pode escrever um Node / Python Lambda que execute bash, sem usar Layers - consulte lambdash para um exemplo.
RichVel

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.