Trabalhando com imagens customizadas do Docker
Em 20 de novembro de 2020, o Dockerhub introduziu a limitação de taxa sobre extrações de imagem anônimas. Essa mudança pode impactar os usuários que estão executando tarefas usando imagens customizadas hospedadas pelo Dockerhub.
A imagem base do pipeline pode não suportar todos os requisitos de sua construção. Por exemplo, pode ser necessário um controle de granularidade mais baixa sobre versões do Node, do Java ou de outras ferramentas. É possível resolver esse problema
incluindo uma primeira etapa em suas tarefas de pipeline que instala uma série de novos pacotes e configura cuidadosamente variáveis de ambiente, como PATH, para configurar seu ambiente. No entanto, uma abordagem melhor é usar o
suporte do pipeline para executar uma imagem personalizada do Docker como base para seu trabalho.
O suporte de imagem do Docker customizado no pipeline é usado somente para fornecer uma imagem que uma tarefa de pipeline específica usa enquanto está em execução. Por exemplo, é possível fornecer uma imagem que contém ferramentas customizadas que são necessárias para o script que a tarefa executa. Depois que a tarefa estiver completa, o contêiner no qual ela estava em execução será derrubado.
Se você está usando um tipo de tarefa de Construção, Teste ou Implementação, é possível selecionar um subtipo de Imagem Customizada do Docker para fornecer o nome da imagem do Docker para usar e especificar o script a ser executado. Por exemplo, use as opções a seguir para executar uma tarefa de construção com o Maven 3.5.3 e IBM Java:
Especificando o nome da imagem do Docker
O nome da imagem do Docker em tarefas de imagem customizada do Docker é projetado para funcionar na mesma maneira que os nomes de imagem funcionam com a CLI do Docker. O formato de um nome de imagem do Docker é: [repository][:][tag].
Por exemplo, para docker run maven:3.5.3-ibmjava, o nome da imagem do Docker é maven:3.5.3-ibmjava, em que maven é o repositório e 3.5.3-ibmjava é a tag. Não há restrições sobre o nome da
imagem do Docker que pode ser usado; qualquer imagem do docker válida funciona.
Se o campo Nome da imagem do Docker não estiver preenchido, a imagem base do pipeline padrão será usada.
Por padrão, seu repositório no Docker Hub é pesquisado. Se você usar outro registro do Docker, como IBM Cloud® Container Registry, será possível usar o nome completo do DNS.
Também é possível usar o nome completo para imagens no Docker Hub. Por exemplo, registry.hub.docker.com/library/maven:3.5.3-ibmjava.
A tag para uma imagem do Docker é opcional. Se você não especificar uma tag, ela será configurada como latest, por padrão. Um valor padrão de latest é apenas um nome de tag que o proprietário do repositório
deve gerenciar. Isso não significa que, cronologicamente, essa imagem do Docker é a imagem mais recente.
É possível localizar uma comunidade grande de repositórios no Docker Hub. IBM hospeda uma série de repositórios públicos que a equipe do IBM Cloud usa em https://hub.docker.com/u/ibmcom/.
Os repositórios ibmcom/ibmjava e ibmcom/ibmnode são úteis para construção.
Usando um registro de imagem privada
Se você estiver usando um registro privado que exija autenticação, deverá definir duas propriedades de ambiente de estágio adicionais: DOCKER_USERNAME e DOCKER_PASSWORD. É possível usar uma propriedade segura para mascarar
seu DOCKER_PASSWORD. Antes que sua imagem seja puxada, a tarefa de imagem customizada do Docker usa suas credenciais de nome de usuário e senha para concluir um docker login.
Para a maioria dos registros, é possível usar o nome de usuário e a senha que foram fornecidos a você. Se você usa o IBM Cloud Container Registry para armazenar suas imagens privadas, deve-se usar uma chave de API da plataforma para autenticação.
-
Solicite uma chave de API da plataforma e certifique-se de salvar a chave.
-
Crie as duas propriedades do ambiente do estágio usando
iamapikeypara seuDOCKER_USERNAMEe a Chave API da plataforma que você salvou paraDOCKER_PASSWORD.caption-side=bottom"
Especificando o script
É possível usar o bloco script em tarefas de imagem customizada do Docker para criar um arquivo de script que seja executado em uma pasta de tarefa, semelhante ao modo como as tarefas de pipeline normais funcionam.
ENTRYPOINT e CMD de seu Dockerfile da imagem do Docker são substituídos e não são chamados. Em alguns casos, isso pode significar a necessidade de incluir etapas de inicialização em seu script.
Tarefas de imagem customizada do Docker fornecem maior flexibilidade o modo de execução de seu script; especificamente, é possível controlar o interpretador de comandos. Normalmente, se a primeira linha do script começa com #! e
com o nome de um interpretador de comandos, essa entrada é usada para executar os comandos na tarefa. Se você não especificar um interpretador de comandos, o shell padrão para a imagem do Docker será usado. Geralmente, #!/bin/bash ou #!/bin/sh são usados; interpretadores de comando de imagem para awk, node e ruby também funcionam, se você especifica uma imagem do Docker apropriada.