O que é um contêiner?#
Esta página conceitual ensinará sobre contêineres e fornecerá uma rápida introdução onde você executará seu primeiro contêiner.
Explicação#
Imagine que você está desenvolvendo uma aplicação web matadora que tem três componentes principais - um frontend React, uma API Python e um banco de dados PostgreSQL. Se você quisesse trabalhar neste projeto, teria que instalar o Node, Python e PostgreSQL.
Como você garante que tem as mesmas versões que as outras pessoas desenvolvedoras do seu time? Ou seu sistema de CI/CD? Ou o que é usado em produção?
Como você garante que a versão do Python (ou Node ou o banco de dados) que sua aplicação precisa não seja afetada pelo que já está na sua máquina? Como você gerencia potenciais conflitos?
É aí que entram os contêineres!
O que é um contêiner? Simplificando, os contêineres são processos isolados para cada um dos componentes da sua aplicação. Cada componente - a aplicação frontend React, o motor da API Python e o banco de dados - é executado em seu próprio ambiente isolado, completamente isolado de todo o resto na sua máquina.
Aqui está o que os torna incríveis. Os contêineres são:
- Autocontidos. Cada contêiner tem tudo o que precisa para funcionar sem depender de nenhuma dependência pré-instalada na máquina hospedeira.
- Isolados. Como os contêineres são executados isoladamente, eles têm influência mínima na máquina hospedeira e em outros contêineres, aumentando a segurança das suas aplicações.
- Independentes. Cada contêiner é gerenciado de forma independente. Excluir um contêiner não afetará nenhum outro.
- Portáteis. Os contêineres podem ser executados em qualquer lugar! O contêiner que é executado na sua máquina de desenvolvimento funcionará da mesma forma em um data center ou em qualquer lugar na nuvem!
Contêineres versus máquinas virtuais (VMs)#
Sem entrar muito em detalhes, uma VM é um sistema operacional inteiro com seu próprio kernel, drivers de hardware, programas e aplicações. Iniciar uma VM apenas para isolar uma única aplicação é muita sobrecarga.
Um contêiner é simplesmente um processo isolado com todos os arquivos necessários para ser executado. Se você executar vários contêineres, todos eles compartilharão o mesmo kernel, permitindo que você execute mais aplicações usando menos infraestrutura.
Usando VMs e contêineres juntos
Muitas vezes, você verá contêineres e VMs usados juntos. Como exemplo, em um ambiente de nuvem, as máquinas provisionadas são normalmente VMs. No entanto, em vez de provisionar uma máquina para executar uma aplicação, uma VM com um tempo de execução de contêiner pode executar várias aplicações em contêineres, melhorando a utilização de recursos e reduzindo custos.
Experimente#
Nesta prática, você verá como executar um contêiner Docker usando a GUI do Docker Desktop.
Usando a GUI#
Use as seguintes instruções para executar um contêiner.
-
Abra o Docker Desktop e selecione o campo Search na barra de navegação superior.
-
Especifique
welcome-to-docker
na entrada de pesquisa e selecione o botão Pull. -
Depois que a imagem for baixada com sucesso, selecione o botão Run.
-
Expanda a opção Optional settings.
-
Em Container name, especifique
welcome-to-docker
. -
Em Host port, especifique
8080
. -
Selecione Run para iniciar seu contêiner.
Parabéns! Você acabou de executar seu primeiro contêiner! 🎉
Visualize seu contêiner#
Você pode visualizar todos os seus contêineres acessando a visualização Containers do Painel do Docker.
Este contêiner executa um servidor web que exibe um site simples. Ao trabalhar com projetos mais complexos, você executará partes diferentes em contêineres diferentes. Por exemplo, você pode executar um contêiner diferente para o frontend, backend e banco de dados.
Acesse o frontend#
Quando você iniciou o contêiner, expôs uma das portas do contêiner na sua máquina. Pense nisso como criar uma configuração para permitir que você se conecte através do ambiente isolado do contêiner.
Para este contêiner, o frontend é acessível na porta 8080
.
Para abrir o site, selecione o link na coluna Port(s) do seu contêiner ou
visite http://localhost:8080 no seu navegador.
Explore seu contêiner#
O Docker Desktop permite que você explore e interaja com diferentes aspectos do seu contêiner. Faça um teste.
-
Vá para a visualização Containers no Painel do Docker.
-
Selecione seu contêiner.
-
Selecione a aba Files para explorar o sistema de arquivos isolado do seu contêiner.
Pare seu contêiner#
O contêiner docker/welcome-to-docker
continua em execução até que você o pare.
-
Vá para a visualização Containers no Painel do Docker.
-
Localize o contêiner que você gostaria de parar.
-
Selecione a ação Stop na coluna Actions.
Usando a CLI#
Siga as instruções para executar um contêiner usando a CLI:
- Abra o terminal da CLI e inicie um contêiner usando o comando
docker run
:shell docker run -d -p 8080:80 docker/welcome-to-docker
A saída deste comando é o ID completo do contêiner.
Parabéns! Você acabou de iniciar seu primeiro contêiner! 🎉
Visualize seus contêineres em execução#
Você pode verificar se o contêiner está ativo e em execução usando o comando
docker ps
:
docker ps
Você verá uma saída como a seguinte:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1f7a4bb3a27 docker/welcome-to-docker "/docker-entrypoint.…" 11 seconds ago Up 11 seconds 0.0.0.0:8080->80/tcp gracious_keldysh
Este contêiner executa um servidor web que exibe um site simples. Ao trabalhar com projetos mais complexos, você executará partes diferentes em contêineres diferentes. Por exemplo, um contêiner diferente para o frontend, backend e banco de dados.
O comando
docker ps
mostrará apenas os contêineres em execução. Para visualizar os contêineres parados, adicione o sinalizador-a
para listar todos os contêineres:docker ps -a
.
Acesse o frontend#
Quando você iniciou o contêiner, expôs uma das portas do contêiner na sua máquina. Pense nisso como criar uma configuração para permitir que você se conecte através do ambiente isolado do contêiner.
Para este contêiner, o frontend é acessível na porta 8080
.
Para abrir o site, selecione o link na coluna Port(s) do seu contêiner ou
visite http://localhost:8080 no seu navegador.
Pare seu contêiner#
O contêiner docker/welcome-to-docker
continua em execução até que você o pare.
Você pode parar um contêiner usando o comando docker stop
.
-
Execute
docker ps
para obter o ID do contêiner. -
Forneça o ID ou nome do contêiner para o comando
docker stop
:shell docker stop <id-do-conteiner>
Ao referenciar contêineres por ID, você não precisa fornecer o ID completo. Você só precisa fornecer o suficiente do ID para torná-lo único. Como exemplo, o contêiner anterior pode ser parado executando o seguinte comando:
shell docker stop a1f
Recursos adicionais#
Os links a seguir fornecem orientação adicional sobre contêineres:
Próximos passos#
Agora que você aprendeu o básico de um contêiner Docker, é hora de aprender sobre imagens Docker.