A dockerização redefiniu o processo de implantação e automação na indústria de software. Desde a sua criação, a Docker equipe tem se esforçado continuamente para tornar a implantação automatizada perfeita. A tecnologia de conteinerização não apenas permite o desenvolvimento rápido de aplicações e eficiência, mas também economiza tempo e esforços árduos. Funcionalidades imbatíveis, como orquestrar, definir e executar aplicações multi-container juntas, tornam o Docker uma escolha favorita para desenvolvedores.
Containers e Imagens Docker
Ao mergulhar para entender melhor o Docker, é essencial revisar o básico. Entender como o Docker funciona pode ser complicado se você não tiver experiência de trabalho com ele. Nesta seção, vamos definir alguns conceitos que são essenciais para iniciantes. Se você acha que está familiarizado com esses conceitos, sinta-se à vontade para pular e seguir para a próxima seção. Você também pode dar uma olhada no nosso guia abrangente que explica os conceitos fundamentais do Docker.
-
Imagens Docker
As imagens Docker são uma coleção de arquivos somente leitura. Depois de criar imagens Docker, você não pode modificá-las, embora seja permitida a exclusão. Usamos uma imagem Docker para criar um ou mais containers Docker de acordo com as nossas necessidades. Para verificar o número de imagens em execução no seu sistema, use o comando:
|
1 |
$docker images |
Quando você faz o pull de imagens de um registro remoto como o Docker Hub, você está baixando arquivos e pastas. Para fazer o pull de uma imagem, use o comando:
|
1 |
$docker pull (nome da the imagem) |
-
Containers Docker
As imagens Docker são o modelo dos containers Docker. Tecnicamente, um container Docker é uma instância de uma imagem Docker. Imagine que, se uma imagem Docker é como um pai, então um container Docker é o filho. Ao contrário das imagens Docker, que você pode criar uma vez, você pode criar múltiplos containers usando uma única imagem. Para verificar a lista de imagens em execução no seu sistema, use o comando:
|
1 |
$docker ps |
Para fazer o pull de um container, use o seguinte comando:
|
1 |
$docker pull (nome do the container) |
-
Como Funcionam as Imagens e Containers Docker
As imagens e containers Docker trabalham lado a lado para liberar o potencial do Docker. Um único container é construído usando a imagem Docker através do comando run. Quando você cria um container Docker, uma nova camada conhecida como Camada do Container (Container Layer) é criada. A camada recém-criada contém a aplicação e suas dependências. Cada container que você cria tem uma Camada do Container de leitura/gravação diferente, e quaisquer alterações feitas no container Docker são refletidas automaticamente na Camada do Container. Lembre-se de que, se você optar por excluir um container, também perderá a Camada do Container.
Diga Olá ao Docker Compose
Docker Compose é uma ferramenta de gerenciamento de containers que permite configurar e orquestrar todos os seus containers Docker em um único arquivo YAML. Iniciar, parar e criar vínculos e volumes intra-container são tarefas facilitadas com esta ferramenta.
-
O que o Docker Compose Faz?
Simplificando, o Docker Compose facilita tarefas complicadas ao eliminar conflitos e problemas organizacionais. Ele permite que os usuários gerenciem diferentes containers Docker de forma centralizada. Em outras palavras, em vez de ter todos os serviços em um único container grande, o Docker Compose divide um serviço em múltiplos serviços para que os usuários possam acessá-los e gerenciá-los sem esforço.
In Visão geral, vamos orientá-lo pelas etapas de instalação da versão atual do Docker Compose para gerenciar aplicações multi-container no CentOS 7. Também passaremos por alguns comandos básicos que você precisa para usar o software com sucesso.
-
Como Usar o Docker Compose
Usar o Docker Compose é extremamente fácil, mesmo para iniciantes. Vamos ver o processo de três etapas envolvido no Docker Compose:
1. Build: Primeiro, construa as imagens no Dockerfile de acordo com as necessidades do seu projeto, ou talvez faça o pull do registro.
2. Definir: Em seguida, você precisa definir todos os serviços componentes no arquivo compose.yml.
3. Executar: Depois de definir os componentes, é hora de executar usando o comando docker-compose.
Pré-requisitos
Antes de prosseguirmos com a instalação do Docker Compose no seu servidor CentOS, certifique-se de ter:
- Um usuário não-root com acesso sudo em um servidor CentOS 7.
- Docker instalado em sua máquina. Por favor, consulte este tutorial sobre como instalar e operar o Docker no Ubuntu 18.04.
Você está pronto agora. Em seguida, acompanhe as etapas abaixo para instalar o Docker Compose no CentOS 7.
Passo 1: Instalando o Docker Compose
Para obter a versão mais recente do Docker Compose, siga as instruções na documentação do Docker e baixe os binários do repositório GitHub do Docker. Verifique se você possui a versão mais recente do software executando o comando abaixo:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Para tornar o binário executável, defina as permissões abaixo:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Em seguida, verifique sua versão para checar se a instalação foi bem-sucedida:
|
1 |
$docker-compose --version |
O código abaixo imprimirá a versão instalada:
Você poderá então executar um exemplo “Hello World” usando o Docker Compose que instalou.
Passo 2: Usando o Docker Compose para Executar um Container
Existe uma imagem “Hello World” no Docker Hub, o registro público do Docker, que pode ser usada para demonstração e testes. Ela mostra como executar um container usando o Docker Compose com a configuração mínima. Primeiro, você precisa criar um diretório para o nosso arquivo YAML:
|
1 |
$mkdir hello-world |
Em seguida, mude para este diretório:
|
1 |
$cd hello-world |
Em seguida, usando seu editor de texto preferido, gere o arquivo YAML. Neste tutorial, usaremos o Vi:
|
1 |
$vi docker-compose.yml |
Pressione i para entrar no modo de inserção e digite isto no arquivo:
|
1 2 |
my-test: image: hello-world |
No nome do container, a primeira linha será incorporada. A segunda linha instrui o programa sobre qual imagem ele deve usar para criar o container. docker-composeup procurará por uma imagem local com o nome hello-world para verificar se ela está disponível quando você digita o comando. Para sair do modo de inserção, pressione ESC. Em seguida, digite :x e pressione ENTER para salvar e fechar o arquivo. O comando docker images pode ser usado para verificar manualmente as imagens em sua máquina:
|
1 |
$ sudo docker images |
Apenas os cabeçalhos das colunas aparecem quando não há nenhuma imagem local:
Para criar o container, execute este comando ainda no diretório /hello-world:
|
1 |
$sudo docker-compose up |
Quando você executa o comando pela primeira vez e não há uma imagem local chamada hello-world, ela será baixada do repositório do Docker Hub:
Para garantir que a instalação funcione, o Docker Compose baixa a imagem, cria um container, o anexa e executa o programa hello program:
Depois disso, uma descrição do que foi feito é exibida:
Quando o hello concluir sua tarefa, o container será desligado e o comando não estará mais em execução no container. Os cabeçalhos das colunas serão exibidos ao visualizar os processos ativos. No entanto, o container hello-world não será listado porque não está em operação no momento:
|
1 |
$sudo docker ps |
Para ver todos os containers, não apenas os atuais, use a flag -a :
|
1 |
$sudo docker ps -a |
Agora que você experimentou executar um container, pode prosseguir para aprender alguns dos comandos fundamentais do Docker Compose.
Step 3: Comandos do Docker Compose
Para começar a usar o Docker Compose, esta seção abordará os comandos básicos fornecidos pela ferramenta docker-compose. docker-compose é um comando que funciona diretório por diretório. Ao gerar um diretório para cada container e um arquivo docker-compose.yml por diretório, você pode executar vários grupos de containers Docker no mesmo computador.
Até agora, você estava executando o Docker Compose por conta própria. Você pode desligá-lo pressionando Ctrl-C. Isso permite que a janela do terminal exiba mensagens de depuração. No entanto, é recomendável executar o docker-compose como um serviço ao operar em produção. A -d opção pode ser usada como uma maneira simples de fazer isso:
|
1 |
docker-compose up -d |
Agora, docker-compose vai para o segundo plano. Seu grupo de containers Docker (parados ou em execução) pode ser gerenciado com o seguinte comando:
|
1 |
$sudo docker-compose ps -a |
O Estado de um container será relatado como Exited se ele estiver parado, como visto no exemplo abaixo:
Um container que está em execução no momento exibirá:
|
1 2 3 4 |
Nome Comando Estado Portas --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Você pode encerrar todos os containers Docker em execução no mesmo diretório que o arquivo docker-compose.yml que você usou para iniciar o grupo Docker:
|
1 |
$docker-compose stop |
Nota: Se você precisar desligar as coisas de forma mais forçada, o docker-compose kill também está disponível.
Em alguns casos, os containers Docker podem salvar seus dados antigos internamente. Use o comando rm para remover todos os containers do seu grupo de containers se quiser começar do zero:
|
1 |
$docker-compose rm |
Executar qualquer um desses comandos de outro diretório que não seja aquele onde o container Docker e o arquivo .yml estão localizados resultará em uma mensagem de erro:
|
1 2 3 4 5 6 |
ERRO: Não'foi possível encontrar um adequado configuração arquivo em este diretório ou qualquer pai. Você está no the diretório correto? Nomes de arquivo suportados: docker-compose.yml, docker-compose.yaml |
Nesta seção, cobrimos o básico sobre a manipulação de containers com o Docker Compose. Como discutido, na seção seguinte você poderá acessar o sistema de arquivos do Docker e executar comandos a partir de um prompt de comando dentro do container, caso precise de controle adicional sobre seus containers.
Passo 4: Acessar o Sistema de Arquivos do Container Docker
É possível executar um prompt de comando em um container e acessar o sistema de arquivos do container usando o docker exec, que é uma ferramenta de linha de comando. Como exemplo, execute “Hello World” e veja quanto tempo leva para o comando docker exec ser concluído. Para fins deste tutorial, a imagem do Nginx no Docker Hub pode ser utilizada. Crie um novo diretório chamado nginx e entre nele:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Agora você deve ter um arquivo docker-compose.yml, que pode abrir em um editor de texto:
|
1 |
vi docker-compose.yml |
Em seguida, no arquivo, adicione o seguinte:
|
1 2 |
nginx: image: nginx |
É hora de fechar a aplicação. Para iniciar o container Nginx em segundo plano, use o seguinte comando:
|
1 |
$sudo docker-compose up -d |
O Docker Compose fará o download da imagem do Nginx e executará o container em segundo plano. Para continuar, você precisará inserir o CONTAINER ID. Você pode visualizar todos os containers em execução no momento com o seguinte comando:
|
1 |
$sudo docker ps |
Você verá o seguinte:
Se você quisesse alterar o sistema de arquivos dentro deste container, usando o docker exec, você usaria o ID exclusivo do container (neste caso, f139d0d78ca7) para criar um shell dentro do container:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Um terminal interativo pode ser aberto usando a opção -t, enquanto /bin/bash fornece ao container um shell bash. Este é o prompt do bash que você verá para o container depois disso:
|
1 |
root@b86b6699714c:/# |
Dentro do seu container, você encontrará um prompt de comando. Reiniciar o container substituirá quaisquer alterações que você tenha feito, a menos que esteja trabalhando em um diretório que tenha sido salvo como parte de um volume de dados. Se você está acostumado a trabalhar com recursos de linha de comando do Linux, deve saber que a maioria das imagens Docker é produzida usando as instalações mais básicas do Linux.
Conclusão
Nós o guiamos pelas etapas de instalação da versão atual do Docker Compose para gerenciar aplicativos multi-container no CentOS 7. A capacidade do Docker Compose de iniciar e encerrar simultaneamente um grande número de containers é impressionante. Ir de templates para aplicações leva minutos. Portanto, se o seu trabalho envolve a execução de vários containers ao mesmo tempo, continuar com o Docker Compose é uma ótima opção. No entanto, não é uma solução única para todos os casos. Você também pode encontrar algumas opções melhores, dependendo de suas necessidades específicas, por exemplo, Kubernetes.
Para explorar ainda mais o poder do Docker Compose, você pode consultar estes tutoriais do nosso blog:
- Implantando Laravel, Nginx e MySQL com Docker Compose
- Como instalar e configurar o Docker Compose no Ubuntu 20.04
Feliz computação!






Comentários
Nenhum comentário ainda. Seja o primeiro.