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!
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.
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.
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.
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.
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.
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.
Frontend | Backend | Bando de Dados |
---|---|---|
Dependências | Dependências | Dependências |
SO 1 Virtualizado | SO 2 Virtualizado | SO 3 Virtualizado |
Hypervisor | Hypervisor | Hypervisor |
Sistema Operacional | Sistema Operacional | Sistema Operacional |
Hardware | Hardware | Hardware |
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.
Frontend | Backend | Bando de Dados |
---|---|---|
Dependências | Dependências | Dependências |
Container 1 | Container 2 | Container 3 |
Sistema Operacional | Sistema Operacional | Sistema Operacional |
Hardware | Hardware | Hardware |
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.
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!
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.
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.
É 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.
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.
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.
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.
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.
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:
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.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
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.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
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.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
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.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
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.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas