Criação de Container

Vamos fazer a criação dos nossos primeiros containers no Docker

Posted by Diego Aquino on March 17, 2024 · 12 mins read

Instalação do Docker no Linux

Antes da criação dos nossos primeiros containers, vamos realizar a instalação do noddo Docker no Linux

O comando curl -fsSL https://get.docker.com/ | sh é utilizado para instalar o Docker em sistemas Linux, executando um script fornecido pelo Docker para uma instalação fácil e rápida. Vamos decompor o comando para entender cada parte dele:

  1. curl: É uma ferramenta de linha de comando usada para transferir dados de ou para um servidor. Neste caso, está sendo usado para baixar o script de instalação do Docker.

  2. -fsSL: São opções passadas para o comando curl que modificam seu comportamento:

    • f: Falha silenciosamente (sem saída) em erros de servidor HTTP (como 404).
    • s: Modo silencioso. Não mostra o progresso nem os erros. Isso é útil em scripts para evitar saídas desnecessárias.
    • S: Mostra um erro se o -s (modo silencioso) estiver ativado, mas ocorreu um erro.
    • L: Se o servidor reportar que a página requisitada foi movida para outro local (indicado por um código de resposta 3xx), esta opção fará com que o curl tente refazer a operação no novo local.
  3. https://get.docker.com/: É a URL de onde o script de instalação do Docker é baixado. Esse script é mantido pelos desenvolvedores do Docker e é projetado para reconhecer a maioria das distribuições Linux e suas versões, aplicando a instalação adequada automaticamente.

  4. |: Este é o operador de pipe. Ele pega a saída do comando anterior (curl) e a usa como entrada para o próximo comando (sh).

  5. sh: É um comando que invoca o interpretador de comandos do shell. Neste contexto, ele executa o script baixado pelo curl.

Ao executar este comando, o script baixado irá:

  • Verificar sua distribuição Linux e versão.
  • Adicionar o repositório Docker às fontes do seu sistema, se necessário.
  • Atualizar o cache do pacote do seu sistema.
  • Instalar a última versão do Docker.

Este método de instalação é rápido e conveniente, mas é importante confiar na fonte do script, já que ele será executado com privilégios de administrador no seu sistema. O site oficial do Docker é considerado confiável para este propósito.


Criando e Gerenciando os Primeiros Contêineres no Docker

1. Executar um Contêiner de Teste

Teste sua instalação do Docker executando um contêiner hello-world:

docker run hello-world

2. Baixar uma Imagem do Docker Hub

Baixe uma imagem, como o Ubuntu, do Docker Hub:

docker pull ubuntu

3. Criar e Executar um Contêiner

Crie e inicie um contêiner a partir da imagem baixada:

docker run -it ubuntu /bin/bash

4. Listar Contêineres

Use para listar todos os contêineres ativos:

docker ps

Para ver todos os contêineres, ativos e inativos:

docker ps -a

5. Sair de um Contêiner

Dentro do contêiner, digite para sair e parar o contêiner:

exit

6. Iniciar e Parar Contêineres

Inicie um contêiner parado com:

docker start [NOME_OU_ID]

Pare um contêiner em execução com:

docker stop [NOME_OU_ID]

7. Identificar o ID do Contêiner

Para listar os IDs de todos os contêineres ativos:

docker ps -q

Para listar os IDs de todos os contêineres, ativos e inativos:

docker ps -aq

8. Remover Contêineres

Para remover um contêiner:

docker rm [NOME_OU_ID]

9. Gerenciar Imagens

Liste todas as imagens disponíveis:

docker images

Para remover uma imagem:

docker rmi [NOME_DA_IMAGEM]

Exemplo de Uso do docker container attach

O comando docker container attach permite que você se conecte a um contêiner em execução, para que você possa interagir com ele através do terminal. Isso é útil para, por exemplo, ver o output de uma aplicação em execução ou interagir com um shell dentro do contêiner.

Pré-requisito

Certifique-se de ter um contêiner em execução. Se você não tiver um, pode iniciar um contêiner Ubuntu como exemplo:

docker run -dit --name meu-ubuntu ubuntu

Este comando irá iniciar um contêiner chamado meu-ubuntu em modo 'detached' (em segundo plano) usando a imagem ubuntu.

Conectando-se ao Contêiner

Para se conectar a este contêiner e interagir com seu terminal, use:

docker container attach meu-ubuntu

Após executar este comando, você será conectado ao terminal do contêiner. Qualquer coisa que você digitar aqui será executada dentro do contêiner.

Desconectando-se do Contêiner

Para se desconectar do contêiner sem pará-lo, você precisa usar a sequência de teclas Ctrl + P, seguida por Ctrl + Q. Essa ação irá devolvê-lo ao terminal do host, deixando o contêiner em execução em segundo plano.

Nota

  • É importante mencionar que se você sair do contêiner usando o comando exit, o contêiner será parado. Para evitar isso e apenas se desconectar, use a sequência Ctrl + P, Ctrl + Q.
  • Se o contêiner não foi iniciado com a opção -it (interativa), você pode não conseguir interagir com ele da maneira esperada ao usar docker container attach.

Este exemplo demonstra um uso básico do docker container attach para conectar a um contêiner em execução, permitindo a interação com o terminal do contêiner. Esse recurso é particularmente útil para desenvolvimento e depuração de aplicações em contêineres.


Vamos utilizar os comandos docker pause e docker unpause, que permitem pausar e retomar a execução de processos dentro de um contêiner Docker. Esses comandos são úteis para temporariamente liberar recursos do sistema sem precisar parar o contêiner completamente.


Exemplo de Uso do docker pause e docker unpause

1. Criar e Iniciar um Contêiner

Primeiro, você precisa ter um contêiner em execução. Se não tiver um, crie e inicie um contêiner usando a imagem Ubuntu como exemplo:

docker run -dit --name meu-ubuntu ubuntu

Isso irá iniciar um contêiner chamado meu-ubuntu em modo 'detached' (em segundo plano), utilizando a imagem ubuntu.

2. Pausar um Contêiner

Para pausar todos os processos em um contêiner ativo, use o comando docker pause, seguido pelo nome ou ID do contêiner:

docker pause meu-ubuntu

Após executar este comando, o contêiner meu-ubuntu estará pausado, significando que todos os seus processos estarão em espera e não utilizarão recursos do CPU. No entanto, o contêiner ainda estará em execução do ponto de vista do Docker, e seus recursos de memória continuarão alocados.

3. Listar Contêineres

Você pode verificar o estado do contêiner usando docker ps. Você verá que o contêiner ainda aparece como em execução, mas ele está, de fato, pausado.

4. Retomar um Contêiner

Para retomar a execução dos processos dentro de um contêiner pausado, use o comando docker unpause, seguido pelo nome ou ID do contêiner:

docker unpause meu-ubuntu

Isso irá retomar a execução do contêiner meu-ubuntu, permitindo que seus processos continuem de onde pararam.

Notas

  • Os comandos docker pause e docker unpause são particularmente úteis para gerenciar recursos do sistema de forma dinâmica, permitindo que você pausar temporariamente contêineres que estão consumindo muitos recursos ou que precisam ser temporariamente suspensos por qualquer razão.
  • Lembre-se de que, enquanto um contêiner está pausado, qualquer operação de I/O de rede ou disco será enfileirada até que o contêiner seja retomado.

Este exemplo demonstra um uso básico dos comandos docker pause e docker unpause para gerenciar a execução de contêineres, fornecendo uma maneira flexível de controlar recursos sem necessidade de parar e reiniciar contêineres.


O comando docker inspect fornece informações detalhadas sobre objetos Docker, como contêineres, imagens, volumes e redes. Ao executá-lo, você recebe uma saída em formato JSON contendo uma riqueza de detalhes sobre a configuração e o estado do objeto especificado. Esse comando é extremamente útil para depuração e para automatizar tarefas com base em propriedades específicas dos objetos Docker.

Como Usar o docker inspect

Sintaxe Básica:

docker inspect [OPÇÕES] NOME|ID [NOME|ID...]
  • [OPÇÕES]: Opções adicionais para o comando. Por exemplo, -f ou --format permite especificar um template de formatação para alterar a saída padrão.
  • NOME|ID: O nome ou ID do objeto Docker que você deseja inspecionar. Você pode especificar múltiplos nomes ou IDs separando-os com um espaço.

Exemplos de Uso:

  • Inspecionar um Contêiner: Para ver informações detalhadas sobre um contêiner, use seu nome ou ID. Por exemplo:

    docker inspect meu-ubuntu
    

    Isso retornará informações detalhadas sobre o contêiner chamado meu-ubuntu.

  • Inspecionar uma Imagem: Da mesma forma, você pode inspecionar uma imagem Docker:

    docker inspect ubuntu
    

    Isso mostrará informações sobre a imagem ubuntu.

  • Formatar a Saída: Se você estiver interessado em uma informação específica, pode usar a opção --format para extrair apenas os dados necessários. Por exemplo, para obter o endereço IP de um contêiner:

    docker inspect --format='' meu-ubuntu
    

Informações que Você Pode Obter

Usando docker inspect, você pode acessar uma ampla gama de informações, como:

  • Configurações de rede do contêiner, incluindo endereço IP, portas expostas e configurações de NAT.
  • Estado do contêiner, incluindo status de execução (executando, pausado, parado), horário de início e término, e código de saída.
  • Configurações de montagem de volume e armazenamento, mostrando onde os dados do contêiner são armazenados no host e como eles estão conectados ao contêiner.
  • Informações sobre a imagem do contêiner, como o nome da imagem e a tag.
  • Configurações de reinício e políticas de reinicialização automática.
  • Variáveis de ambiente e comandos usados para iniciar o contêiner.

Conclusão

docker inspect é uma ferramenta poderosa que oferece visibilidade sobre quase todos os aspectos dos objetos Docker. Seja você um desenvolvedor trabalhando para entender a configuração de um contêiner ou um administrador de sistema automatizando a implantação e a gestão de infraestrutura Docker, docker inspect é uma ferramenta indispensável para obter informações detalhadas e precisas sobre os objetos Docker em seu ambiente.


Este roteiro oferece uma visão geral básica para começar a trabalhar com o Docker, abrangendo desde a instalação até a gestão básica de contêineres e imagens. Para informações mais detalhadas e avançadas, consulte a documentação oficial do Docker.