Meu resumo do Curso Iniciando com Docker da School of Net
Há detalhes e instruções para instalação do docker na página official. No Linux o processo é mais simples, visto que ele foi feito pra rodar no Linux.
Caso tenha o Windows 10 Pro, basta habilitar o HyperV e instalar o Docker.msi
Em outras versões, deve-se instalar um aplicativo de máquina virtual (como o virtualbox) e o DockerToolbox.
Imagem é diferente de container!
- docker run image: baixa, se não estiver instalada, e executa a imagem
- docker images: lista as imagens
- docker ps: lista os containners ativos
- docker ps -a: lista todos os containers, inclusive que não estão rodando, com os detalhes.
- docker rm CONTAINER ID: remove um containner.
No docker hub, é possível pesquisar imagens de docker disponíveis. Nele também é possível publicar uma imagem docker
- docker run imagem: baixa e roda a imagem informada
- docker run imagem -d: roda a imagem em background
- docker run -d -p porta-host:porta-container imagem: informa em qual porta da máquina será correspondente à porta do serviço instalado com o docker.i
- docker-machine ls: mostra configurações do docker
- --name contanier-name: parâmetro que atribui um nome a um container, ao invés de permitir que o docker crie um automaticamente.
- docker rm container -f: para e deleta o container
- docker exec container comando: executa um comando linux dentro de um container
- docker exec -it container bash: executa o container de forma interativa, como se fosse uma conexão ssh, mas não é.
É possível substituir pastas que encontram-se dentro do container, por pastas existentes dentro do host.
- docker run -d --name webserver2 -p 8081:80 -v /home/user-host/workspace:/usr/share/nginx/html: Cria um link da pasta html do container webserver2 para a pasta workspace do usuário user-host da host
- na hora de especificar a pasta do host, pode-se utilizar $(pwd)/workspace:/usr/share/nginx/
- -e "VARIAVEL_X" -e "VARIAVEL_Y": alguns containers dependem de variáveis de ambiente, e várias variáveis podem ser passadas para um container.
- --link nome-container:nome-aplicacao-no-novo-container : através do link pode-se linkar containers, informando o nome do container a ser linkado: nome da aplicação no container a ser criado.
- a partir do nome do servidor linkado (qualquer um dos dois nomes do mesmo servidor) é possível realizar o acesso a aplicação. Por exemplo, se essa aplicação linkada for um banco de dados mysql, basta informar o nome desta aplicação como host, para que a conexão seja estabelecida.
O dockerfile é um arquivo que orienta na criação de imagens.
é necessário criar um arquivo Dockerfile (não possui extensão). Nele deve-se definir configurações para o arquivo.
configurações comuns no Dockerfile:
- FROM: indica imagem de origem do dockerfile. Exemplo:
FROM php:7.0-apache
- MAINTAINER: indica o email do administrador da imagem
- RUN: informa comandos a serem executados aṕós a criação da imagem. Exemplo
RUN apt update && apt install -y vim
- WORKDIR diretório: informa o diretório de trabalho
- ADD arquivo destino: adiciona um arquivo da máquina local (ou host) para o destino informado no container.
- CMD ["arquivo"]: executa scripts existentes no container.
Comandos para se buildar o container
- docker build -t usuario-docker-hub/nome-imagem diretorio-dockerfile:
- docker build usuario-docker-hub/nome-imagem:v2 : esse v2 é apenas uma descrição de nova versão, pode ser v1, v3, vX, xpto, charlinho e teresa.
A indentação dos arquivos yml são importantes!
uma estrutura de docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql" # os arquivos do mysql ficam guardados no host em ./.data/db
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
MYSQL_USER: root
MYSQL_PASSWORD: root
web:
volumes:
- "./src:/var/www/html" # os arquivos de /var/www/html do container ficam armazenados em ./src do host
depends_on:
- db
image: my-php
links:
- db
ports:
- "8000:80"
restart: always
Para criar os conatainer a partir do docker compose, basta executar:
- docker-compose up -d