Alura > Cursos de DevOps > Cursos de Começando em DevOps > Conteúdos de Começando em DevOps > Primeiras aulas do curso DevOps: construindo e gerindo containers com o Docker

DevOps: construindo e gerindo containers com o Docker

Hello Docker! - Apresentação

Olá! Te desejo as boas-vindas a mais um curso da formação de DevOps! Meu nome é Lucas Mata e serei seu instrutor nesta jornada.

Audiodescrição: Lucas é uma pessoa branca, de barba e bigode ralos curtos e escuros. Possui cabelo curto e liso, também escuro, e usa óculos de armação redonda na cor preta. Veste uma camiseta branca com um QR Code estampado e está sentado em uma cadeira gamer na cor preta. Ao fundo, uma parede iluminada em tons de azul e roxo, e uma estante com itens decorativos.

Começaremos este curso compreendendo o conceito de containers, e como podemos utilizá-los para transferir soluções, como aplicações e softwares, entre diferentes ambientes. Durante o curso, faremos uso da ferramenta Docker.

Abordaremos também a criação de imagens para aplicações e como implantá-las em ambientes de nuvem. Além disso, entenderemos como garantir a persistência de dados utilizando containers. Tudo isso será contextualizado através do projeto da aplicação web chamada Allbooks.

Não se esqueça de aproveitar os recursos oferecidos pela plataforma. Além dos vídeos, temos atividades disponíveis e você pode contar com o apoio do fórum e da nossa comunidade no Discord. Se você ainda não assistiu aos cursos anteriores desta formação, recomendamos fazê-lo para aproveitar ao máximo o conteúdo.

Nos vemos nos próximos vídeos para darmos mais um passo em nossa jornada de aprendizado em DevOps!

Hello Docker! - Entendendo os containers

A integração e a colaboração entre as equipes de desenvolvimento e operações não surgem por acaso. Temos observado a evolução dos softwares em relação à sua complexidade e à diversidade de funcionalidades. Podemos analisar um caso concreto que já conhecemos, que é o da plataforma web Allbooks.

Processo de desenvolvimento

Para que essa plataforma esteja disponível para as pessoas usuárias na web, ela passa por uma série de processos. Na imagem a seguir podemos observar que para desenvolvermos uma plataforma ou mesmo outro software como o Allbooks, começamos identificando os requisitos. Ou seja, as principais características que esse produto deve ter.

Infográfico de processo linear em cinco etapas com ícones e texto em fundo escuro. As etapas são enumeradas de 1 a 6, nomeadas respectivamente como "Identificação das necessidades", "Especificação técnica", "Documentação", "Testes", "Revisão" e "Publicação".A partir daí, saímos com uma lista de especificações técnicas para iniciar o processo de desenvolvimento. Depois, vamos testando essas funcionalidades implementadas e revisamos de acordo com o resultado desses testes, até que chegamos na fase de homologação, quando a solução está pronta para ser disponibilizada e colocada em produção para ser acessada pelas pessoas usuárias.

Desafios na transição entre ambientes

Ao longo desse processo, notamos que a solução passa por uma variedade de ambientes, cada um com seus próprios sistemas, dependências e bibliotecas específicas. Isso muitas vezes resulta em conflitos dentro da equipe, oriundos geralmente de dilemas em que a aplicação funcionava em determinada máquina.

Como podemos resolver esse problema e garantir consistência entre os diferentes ambientes, como desenvolvimento, teste e produção? Pensando em um software como um produto, como podemos garantir uma transição suave entre esses ambientes? É como transportar um produto da fábrica até a casa do cliente, passando por diferentes meios de transporte e locais geográficos.

Solução com contêineres

No mundo físico, os contêineres facilitam o transporte de mercadorias, e você provavelmente já ouviu falar de contêineres também no contexto tecnológico. Essa solução é exatamente o que podemos utilizar para resolver o problema de consistência entre diferentes ambientes pelos quais uma solução de software passa. Ao encapsular o software dentro de contêineres, garantimos a consistência e evitamos problemas com pré-requisitos e dependências instaladas em cada ambiente.

O contêiner é uma solução de virtualização. Já vimos algo parecido quando tivemos que usar uma máquina virtual com o Ubuntu Server para explorar o Linux, usando um software de virtualização conhecido como VirtualBox. Mas há diferenças marcantes entre uma máquina virtual e um contêiner.

Diferenças entre Máquinas Virtuais e Contêineres

Em uma máquina virtual (VM), o funcionamento se dá com o hardware físico, seguido pelo sistema operacional instalado. Acima dessa camada, encontra-se o hypervisor, responsável por isolar o funcionamento do software de virtualização do sistema operacional hospedeiro. Dentro desse ambiente, podemos ter diferentes sistemas operacionais, independentes do sistema hospedeiro, e prepará-los com as dependências necessárias, configurando partes do software conforme necessário. Esta é a abordagem típica de virtualização usando máquinas virtuais.

FrontendBackendBando de Dados
DependênciasDependênciasDependências
SO 1 VirtualizadoSO 2 VirtualizadoSO 3 Virtualizado
HypervisorHypervisorHypervisor
Sistema OperacionalSistema OperacionalSistema Operacional
HardwareHardwareHardware

Por outro lado, os contêineres funcionam de maneira um pouco diferente. Embora também tenhamos as camadas de hardware e sistema operacional, não há uma camada de hypervisor. Em vez disso, os contêineres são executados diretamente sobre o sistema operacional hospedeiro, eliminando a necessidade dessa camada de isolamento. Isso é possível graças aos namespaces, que garantem diferentes níveis de isolamento entre os contêineres.

FrontendBackendBando de Dados
DependênciasDependênciasDependências
Container 1Container 2Container 3
Sistema OperacionalSistema OperacionalSistema Operacional
HardwareHardwareHardware

Nos contêineres, não é necessário ter um sistema operacional completo instalado. Podemos utilizar apenas as partes necessárias do sistema e acessar o kernel do sistema operacional hospedeiro, aumentando a eficiência e facilitando o uso de recursos. Enquanto nas VMs era preciso alocar recursos específicos para cada VM, nos contêineres, eles são executados como processos isolados dentro da máquina, proporcionando uma gestão eficiente dos recursos por meio dos cgroups.

Além disso, os contêineres utilizam diversos namespaces para o isolamento em diferentes níveis:

Então, os contêineres são uma solução prática e eficiente de virtualização, que nos permite fazer esse transporte do software entre diferentes ambientes sem problemas de consistência, evitando qualquer conflito em relação a dependências e bibliotecas que possam ou não estar instaladas nesses diferentes ambientes pelos quais o software vai passar.

Próximos passos

Agora, podemos começar a explorar como usar os contêineres, na prática. Para isso, na sequência, você encontrará uma atividade para preparar o seu ambiente!

Hello Docker! - Verificando o Docker

O Docker será a ferramenta que utilizaremos para criar, implantar e executar aplicativos usando contêineres. Então, vamos explorar essa ferramenta de conteinerização.

Preparação do ambiente

Antes, é importante que você tenha realizado com êxito as atividades de preparação do ambiente que antecedem este vídeo. Dependendo do seu sistema operacional, essas atividades variam um pouco. Mas vamos aprender a instalação do Docker tanto no Windows, quanto no Linux.

É importante destacar que o uso do Docker é altamente recomendado no ambiente Linux, para podermos tirar o máximo proveito dessa ferramenta em termos de eficiência e produtividade, assim teremos também um ambiente mais estável para o uso e gerenciamento dessa plataforma. Sabemos que a maioria das pessoas utiliza o Windows, que já vem nativo no computador, então também conseguiremos estudar e aprender bastante sobre o Docker e sobre o uso de contêineres usando o ambiente Windows.

No ambiente Windows, especificamente, teremos que adotar uma camada de virtualização, onde usaremos o WSL2, Windows Subsystem for Linux, que é um subsistema, como o próprio nome sugere, que vai executar um ambiente Linux dentro do ambiente Windows, nos permitindo usar o Docker dentro do ambiente Windows.

Regras de uso do Docker

É importante também que, ao usarmos o Docker, estejamos atentos em relação às regras de uso, que podem variar ao longo do tempo, sobretudo quando vamos fazer um uso mais econômico, ou seja, construir um software, como um produto. Precisamos estar atentos aos limites de faturamento da empresa para não fazermos o uso do Docker de forma indevida. Para fins educacionais, não temos problema nenhum, podemos seguir tranquilamente.

Testando a instalação do Docker no ambiente Windows

Para começar, vamos testar se o Docker está bem instalado no ambiente Windows. Então, vamos no menu iniciar, buscamos por "WSL2" e abrimos. Isso abrirá o prompt de comando.

Para testar, vamos usar uma ferramenta comum para o ambiente Docker, que é um contêiner hello world (olá mundo), tal qual no mundo da programação, em que costumamos imprimir o hello world para dar os primeiros passos em uma determinada linguagem.

Para isso, vamos digitar docker run, que vai executar um contêiner usando a ferramenta Docker, e especificar o contêiner hello-world.

docker run hello-world

Ao teclar "Enter", obtemos como retorno uma mensagem dizendo que a instalação aparentemente está funcionando bem, além das etapas necessárias para gerar essa mensagem, introduzindo-nos no Docker.

Testando a instalação do Docker no ambiente Linux

Se estivermos usando o ambiente Linux para realizar este teste, podemos seguir os seguintes passos: primeiro, instalamos o Ubuntu dentro do WSL. Em seguida, no menu superior, acessamos a opção "Ubuntu" no menu em cascata. Depois, digitamos o comando docker run hello-world e pressionamos "Enter". Isso resultará na geração da mesma mensagem.

Solução para problemas com o comando sudo

Se, por acaso, você nunca utilizou o Docker no ambiente Linux e se deparar com um erro, não se preocupe. Não há problema com sua instalação. O Docker às vezes requer o uso do comando sudo, então pode ser necessário executar sudo docker run hello-world.

Para evitar ter que utilizar o sudo toda vez que executar um comando no Docker, podemos adotar uma estratégia alternativa. Essa estratégia envolve a criação de um grupo chamado docker no sistema e a inclusão do nosso usuário nele. Dessa forma, não será mais necessário usar o sudo sempre que quisermos executar algum comando do Docker.

Para realizar esse procedimento, digitamos sudo usermod -aG docker $ seguido do usuário. Em nosso caso, o usuário é alura, mas você deve utilizar o seu usuário.

sudo usermod -aG docker $alura

Após pressionar "Enter", será solicitada a senha, e o comando será executado. Com isso, o Docker será adicionado ao grupo docker, o grupo será criado, e o nosso usuário será inserido nele, permitindo que executemos o Docker sem precisar escalonar privilégios.

Próximos passos

Com todos esses testes concluídos e o Docker funcional em nosso computador, é hora de explorar mais sobre como utilizar contêineres. Isso nos permitirá, inclusive, executar nossa plataforma web Allbooks de forma conteinerizada.

Sobre o curso DevOps: construindo e gerindo containers com o Docker

O curso DevOps: construindo e gerindo containers com o Docker possui 124 minutos de vídeos, em um total de 54 atividades. Gostou? Conheça nossos outros cursos de Começando em DevOps em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Começando em DevOps acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
por
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

Matricule-se

Pro

De
R$ 2.400
por
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

Matricule-se

Ultra

12X
R$209
à vista R$2.508
  • Acesso a TODOS os cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, com mensagens ILIMITADAS

    Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.

  • Luri Vision, a IA que enxerga suas dúvidas

    Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

  • 6 Ebooks da Casa do Código

    Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas