===== Gerenciamento do Docker - Nível Básico ===== ==== Nível Básico ==== * **Verificar a versão do Docker instalada:** - docker --version - Exibe a versão do **Docker** instalada no sistema. * **Listar os containers em execução:** - docker ps - Mostra uma lista dos containers que estão atualmente em execução. * **Listar todos os containers (em execução e parados):** - docker ps -a - Exibe todos os containers, incluindo os que já foram executados e pararam. * **Listar as imagens Docker disponíveis:** - docker images - Exibe uma lista de todas as imagens disponíveis localmente no sistema. * **Iniciar um container baseado em uma imagem:** - docker run -d nginx - Inicia um container da imagem **nginx** em segundo plano (`-d` para **detached mode**). * **Executar um container interativamente:** - docker run -it ubuntu /bin/bash - Inicia um container **Ubuntu** interativo (`-it` para modo interativo) e abre um shell **bash** no container. * **Parar um container em execução:** - docker stop nome_do_container - Para um container em execução, identificando-o pelo nome ou ID. * **Remover um container parado:** - docker rm nome_do_container - Remove um container que não está mais em execução. * **Remover uma imagem Docker:** - docker rmi nome_da_imagem - Remove uma imagem Docker do sistema local. * **Obter logs de um container em execução:** - docker logs nome_do_container - Exibe os logs do container especificado, permitindo visualizar a saída do processo dentro do container. * **Inspecionar um container para obter detalhes:** - docker inspect nome_do_container - Exibe informações detalhadas sobre um container, incluindo configurações de rede, volumes e variáveis de ambiente. * **Iniciar um container parado:** - docker start nome_do_container - Inicia um container que foi previamente parado. * **Acessar um container em execução:** - docker exec -it nome_do_container /bin/bash - Abre um shell **bash** interativo dentro de um container que já está em execução. * **Remover todos os containers parados de uma vez:** - docker container prune - Remove todos os containers parados do sistema, liberando espaço. * **Obter ajuda sobre os comandos do Docker:** - docker --help - Exibe o menu de ajuda com a lista de comandos disponíveis do **Docker**. ===== Gerenciamento do Docker - Nível Intermediário ===== ==== Nível Intermediário ==== * **Criar e utilizar volumes Docker para persistência de dados:** - docker volume create meu_volume - Cria um volume persistente chamado **meu_volume**, que pode ser usado por containers. * **Montar um volume em um container:** - docker run -d -v meu_volume:/var/www/html nginx - Inicia um container **nginx** e monta o volume **meu_volume** no diretório `/var/www/html` do container, permitindo que dados persistam mesmo após a remoção do container. * **Listar todos os volumes criados:** - docker volume ls - Exibe uma lista de todos os volumes Docker disponíveis. * **Remover volumes não utilizados:** - docker volume prune - Remove todos os volumes que não estão sendo usados por nenhum container, liberando espaço no sistema. * **Criar uma rede personalizada no Docker:** - docker network create minha_rede - Cria uma rede **bridge** chamada **minha_rede** que pode ser usada para conectar containers. * **Conectar um container a uma rede específica:** - docker run -d --network minha_rede nginx - Inicia um container **nginx** e conecta-o à rede **minha_rede**, permitindo que ele interaja com outros containers na mesma rede. * **Listar todas as redes Docker disponíveis:** - docker network ls - Exibe uma lista de todas as redes Docker criadas. * **Inspecionar uma rede Docker para obter detalhes:** - docker network inspect minha_rede - Exibe informações detalhadas sobre a rede **minha_rede**, incluindo containers conectados, configuração de IP e outras propriedades. * **Desconectar um container de uma rede:** - docker network disconnect minha_rede nome_do_container - Remove o container **nome_do_container** da rede **minha_rede**, mantendo o container em execução. * **Limitar o uso de CPU e memória de um container:** - **Limitar a CPU a 50%**: docker run -d --cpus="0.5" nginx - **Limitar a memória a 256MB**: docker run -d --memory="256m" nginx - Esses comandos iniciam containers **nginx** limitando o uso de **CPU** e **memória**, ajudando a controlar os recursos consumidos. * **Executar um container com prioridade de CPU (shares):** - docker run -d --cpu-shares 512 nginx - Executa um container **nginx** com prioridade de **CPU** ajustada, onde **512** indica que o container receberá mais CPU que um container com **shares** padrão (1024 é o padrão). * **Limitar o uso de I/O no disco de um container:** - docker run -d --device-read-bps /dev/sda:1mb --device-write-bps /dev/sda:1mb nginx - Limita a taxa de leitura e gravação no dispositivo `/dev/sda` a **1MB/s**, controlando o uso de I/O do container. * **Renomear um container existente:** - docker rename container_antigo container_novo - Renomeia o container **container_antigo** para **container_novo**, mantendo o container em execução. * **Verificar o uso de recursos (CPU, memória, rede, I/O) de containers:** - docker stats - Mostra em tempo real o uso de **CPU**, **memória**, **rede** e **I/O** de todos os containers em execução. * **Verificar o histórico de uma imagem Docker:** - docker history nome_da_imagem - Exibe o histórico de camadas de uma imagem Docker, incluindo comandos utilizados para a construção da imagem. * **Efetuar login no Docker Hub para baixar imagens privadas:** - docker login - Realiza o login no Docker Hub (ou em outro registro Docker) para permitir o download de imagens privadas. * **Fazer o pull de uma imagem privada de um repositório:** - docker pull nome_do_usuario/imagem_privada - Baixa uma imagem privada de um repositório após efetuar o login no Docker Hub. ===== Gerenciamento do Docker - Nível Avançado ===== ==== Nível Avançado ==== * **Construir uma imagem Docker personalizada com um Dockerfile:** - **Criar um Dockerfile básico:** ``` FROM ubuntu:20.04 RUN apt-get update && apt-get install -y nginx COPY ./meu_arquivo.html /var/www/html/index.html CMD ["nginx", "-g", "daemon off;"] ``` - **Construir a imagem:** docker build -t minha_imagem_customizada . - Cria uma imagem personalizada chamada **minha_imagem_customizada** com base em um **Dockerfile**, que instala o **nginx** e copia um arquivo HTML. * **Listar as camadas de uma imagem Docker:** - docker history minha_imagem_customizada - Exibe todas as camadas de uma imagem, mostrando quais comandos foram utilizados para construí-la. * **Executar uma imagem com variáveis de ambiente personalizadas:** - docker run -d -e VAR1=valor1 -e VAR2=valor2 minha_imagem_customizada - Inicia um container da imagem **minha_imagem_customizada** com as variáveis de ambiente **VAR1** e **VAR2** definidas. * **Criar e usar um arquivo `.env` para variáveis de ambiente:** - **Exemplo de arquivo `.env`:** ``` MYSQL_USER=user MYSQL_PASSWORD=secret ``` - **Executar o container utilizando o `.env`:** docker run --env-file .env mysql - Utiliza um arquivo **`.env`** para definir variáveis de ambiente no container **MySQL**. * **Criar uma rede Docker entre múltiplos containers (Docker Compose):** - **Criar um arquivo `docker-compose.yml`:** ``` version: '3' services: web: image: nginx ports: - "80:80" db: image: mysql environment: MYSQL_ROOT_PASSWORD: exemplo ``` - **Iniciar múltiplos containers com Docker Compose:** docker-compose up -d - Utiliza o **Docker Compose** para orquestrar e iniciar múltiplos containers (um **nginx** e um **MySQL**) com uma única configuração. * **Parar e remover containers criados com Docker Compose:** - docker-compose down - Para e remove todos os containers, redes e volumes criados pelo comando **`docker-compose up`**. * **Construir imagens com Docker Compose (build):** - **Adicionar a seção build no `docker-compose.yml`:** ``` version: '3' services: web: build: . ports: - "80:80" ``` - **Construir e iniciar os containers:** docker-compose up --build - Utiliza o **Docker Compose** para construir uma imagem personalizada com base em um **Dockerfile** no diretório atual. * **Limitar o uso de CPU e memória em Docker Compose:** - **Adicionar limites no `docker-compose.yml`:** ``` version: '3' services: web: image: nginx deploy: resources: limits: cpus: "0.5" memory: "512M" ``` - Limita o uso de **CPU** e **memória** para o serviço **nginx** utilizando **Docker Compose**. * **Inspecionar a rede criada pelo Docker Compose:** - docker network inspect nome_da_rede - Exibe detalhes sobre a rede **Docker Compose**, incluindo os containers conectados e os IPs atribuídos. * **Iniciar um container de forma temporária para testes:** - docker run --rm -it ubuntu /bin/bash - Inicia um container **Ubuntu** de forma temporária com o **`--rm`**, garantindo que ele seja removido automaticamente após o término da execução. * **Usar volumes com Docker Compose:** - **Adicionar volumes no `docker-compose.yml`:** ``` version: '3' services: web: image: nginx volumes: - meu_volume:/var/www/html volumes: meu_volume: ``` - Utiliza **volumes Docker** com **Docker Compose**, criando um volume chamado **meu_volume** e montando-o no diretório `/var/www/html` do **nginx**. * **Remover imagens antigas de containers não utilizados:** - docker image prune - Remove todas as imagens não utilizadas no sistema, liberando espaço. * **Remover containers, volumes e redes de forma automática:** - docker system prune - Remove todos os containers, volumes, e redes que não estão em uso, liberando espaço e limpando o ambiente Docker. * **Verificar logs de múltiplos containers com Docker Compose:** - docker-compose logs - Exibe os logs de todos os containers gerenciados pelo **Docker Compose**.