Instalação do Jenkins com Docker

JenkinsBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos o processo de instalação do Jenkins usando o Docker. Jenkins é um servidor de automação amplamente utilizado para processos de integração contínua e entrega contínua (CI/CD). Ao final deste laboratório, você terá experiência prática na configuração do Jenkins com Docker, fornecendo uma base sólida para futuros projetos DevOps.

Para iniciantes, é importante entender que o Docker é uma plataforma que permite empacotar e executar aplicativos em ambientes isolados chamados de contêineres (containers). Esse isolamento garante que seu aplicativo funcione de forma consistente em diferentes sistemas. Jenkins, por outro lado, é uma ferramenta que ajuda a automatizar partes do desenvolvimento de software, particularmente a construção, teste e implantação de código.

Preparando o Ambiente Docker

Nesta etapa, garantiremos que o Docker esteja devidamente instalado e em execução em nosso sistema. O Docker é essencial para este laboratório, pois nos permite executar o Jenkins em um contêiner (container), fornecendo um ambiente consistente e isolado.

Primeiramente, vamos verificar se o Docker está instalado e em execução. Abra um terminal e execute o seguinte comando:

docker --version
Saída do comando de versão do Docker

Este comando deve exibir a versão do Docker instalada em seu sistema. Você deve ver uma saída semelhante a esta:

Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3

Se você não vir um número de versão, pode significar que o Docker não está instalado ou não está no PATH do seu sistema. Não se preocupe se isso acontecer; abordaremos isso em breve.

Em seguida, vamos verificar se o daemon do Docker está em execução:

sudo systemctl status docker

Este comando verifica o status do serviço Docker. Você deve ver uma saída indicando que o serviço Docker está ativo (em execução). Pode ter uma aparência semelhante a esta:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago

Se o Docker não estiver em execução, você verá uma mensagem indicando que o serviço está inativo ou falhou.

Baixando a Imagem Docker do Jenkins

Nesta etapa, faremos o download da imagem Docker oficial do Jenkins do Docker Hub. Docker Hub é um repositório baseado em nuvem onde as imagens Docker são armazenadas e compartilhadas.

Para obter a versão LTS (Long Term Support - Suporte de Longo Prazo) mais recente do Jenkins, execute o seguinte comando:

docker pull jenkins/jenkins:lts

Vamos detalhar este comando:

  • docker pull diz ao Docker para baixar uma imagem
  • jenkins/jenkins é o nome da imagem (criada pelo projeto Jenkins)
  • :lts é uma tag que especifica que queremos a versão de Suporte de Longo Prazo, que geralmente é mais estável

Este comando baixa a imagem do Jenkins para sua máquina local. O download pode levar alguns minutos, dependendo da velocidade da sua internet. Você verá barras de progresso indicando o status do download de várias camadas que compõem a imagem.

Após a conclusão do download, você pode verificar se a imagem agora está disponível localmente executando:

docker images

Este comando lista todas as imagens Docker em seu sistema. Você deve ver a imagem do Jenkins listada na saída, semelhante a esta:

REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
jenkins/jenkins    lts       7a7add0bf3da   8 days ago     470MB

Se você não vir a imagem do Jenkins, pode significar que o download falhou. Nesse caso, tente executar o comando docker pull novamente. Se os problemas persistirem, verifique sua conexão com a internet ou tente usar uma rede diferente.

Criando um Volume Docker para os Dados do Jenkins

Nesta etapa, criaremos um volume Docker para armazenar persistentemente os dados do Jenkins. Esta é uma etapa crucial para manter a configuração do Jenkins e o histórico de compilação.

Volumes Docker fornecem uma maneira de persistir dados gerados e usados por contêineres Docker. Isso é particularmente importante para o Jenkins, pois queremos reter a configuração, os dados dos jobs e os artefatos de compilação, mesmo que o contêiner seja interrompido ou removido.

Crie um novo volume chamado jenkins-data executando:

docker volume create jenkins-data

Este comando diz ao Docker para criar um novo volume. O Docker gerencia esses volumes, armazenando-os em uma parte do sistema de arquivos do seu host.

Você pode verificar se o volume foi criado listando todos os volumes Docker:

docker volume ls

Você deve ver jenkins-data na lista de volumes, assim:

DRIVER    VOLUME NAME
local     jenkins-data

Se você não vir o volume, tente criá-lo novamente. Se os problemas persistirem, certifique-se de ter as permissões necessárias para criar volumes Docker (você pode precisar usar sudo se seu usuário não estiver no grupo docker).

Entender os volumes Docker é importante porque:

  1. Eles permitem que os dados persistam além do ciclo de vida de um contêiner.
  2. Eles podem ser facilmente copiados e restaurados.
  3. Eles podem ser compartilhados entre contêineres, se necessário.

Executando o Container Docker do Jenkins

Agora que temos a imagem do Jenkins e um volume para persistência de dados, podemos executar o contêiner do Jenkins. Esta etapa realmente iniciará o Jenkins em um contêiner Docker, tornando-o acessível em seu sistema.

Executaremos o contêiner com as seguintes configurações:

  • Mapear a porta 8080 do contêiner para a porta 8080 do host (para a interface web)
  • Mapear a porta 50000 do contêiner para a porta 50000 do host (para conexões de agente)
  • Montar o volume jenkins-data em /var/jenkins_home no contêiner
  • Executar o contêiner em modo detached (desacoplado)

Execute o seguinte comando para executar o contêiner do Jenkins:

docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts

Vamos detalhar este comando:

  • docker run cria e executa um novo contêiner
  • -d executa o contêiner em modo detached (em segundo plano)
  • -p 8080:8080 mapeia a porta 8080 no contêiner para a porta 8080 no seu host
  • -p 50000:50000 mapeia a porta 50000 no contêiner para a porta 50000 no seu host
  • -v jenkins-data:/var/jenkins_home monta nosso volume Docker no diretório home do Jenkins no contêiner
  • --name jenkins-lts dá ao nosso contêiner um nome para fácil referência
  • jenkins/jenkins:lts especifica a imagem a ser usada

Após executar este comando, o Docker iniciará o contêiner do Jenkins em segundo plano. Você pode verificar se o contêiner está em execução executando:

docker ps

Este comando lista todos os contêineres Docker em execução. Você deve ver o contêiner do Jenkins listado na saída, semelhante a este:

CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
747b6dc7b1af   jenkins/jenkins:lts   "/usr/bin/tini -- /u…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins-lts

Se você não vir o contêiner do Jenkins, pode ter falhado ao iniciar. Você pode verificar se há mensagens de erro usando:

docker logs jenkins-lts

Isso mostrará os logs do contêiner, o que pode ajudar a diagnosticar quaisquer problemas.

Acessando a Interface Web do Jenkins

Com o container do Jenkins agora em execução, podemos acessar sua interface web para completar a configuração inicial. Este passo irá guiá-lo através do acesso ao Jenkins e da realização da configuração inicial.

Existem duas maneiras de acessar a interface web do Jenkins:

  1. Clique no símbolo + na aba superior do ambiente virtual para criar um novo Web Service e insira a porta 8080.

    Creating Jenkins web service tab

    Este método funciona dentro do ambiente de laboratório, criando uma nova aba que exibirá a interface do Jenkins.

  2. Abra o navegador Firefox na área de trabalho VNC. O navegador abrirá automaticamente em http://localhost:8080, então você não precisa inserir o URL manualmente.

    Firefox Jenkins access page

Você deverá ver a página "Unlock Jenkins" (Desbloquear Jenkins). Esta medida de segurança garante que apenas usuários autorizados possam configurar o Jenkins.

Para este ambiente de laboratório, o nome de usuário padrão é admin e a senha também é admin.

Insira essas credenciais na página "Unlock Jenkins" e clique em "Continue" (Continuar).

Jenkins unlock page credentials

Após desbloquear o Jenkins, você será guiado pelo processo de configuração inicial, que inclui a instalação de plugins e a criação de um usuário administrador. Para este laboratório, você pode escolher a opção "Install suggested plugins" (Instalar plugins sugeridos) para começar rapidamente.

Resumo

Neste laboratório, instalamos e configuramos com sucesso o Jenkins usando o Docker. Cobrimos etapas essenciais, incluindo a preparação do ambiente Docker, o pull da imagem do Jenkins, a criação de um volume persistente para os dados do Jenkins, a execução do contêiner do Jenkins e o acesso à interface web do Jenkins para a configuração inicial.

Esta experiência prática forneceu a você uma base sólida no uso do Docker para implantar o Jenkins, uma habilidade crucial nas práticas modernas de DevOps. Agora você está pronto para explorar o Jenkins mais a fundo, criar tarefas de build e integrá-lo ao seu fluxo de trabalho de desenvolvimento.