Introdução ao Docker até a criação de ambientes imutáveis com docker-compose.
---
Docker introduction until immutable environments with docker-compose. Language: PT-BR
algo entre o chroot e uma máquina virtual propriamente dita, e neste meio é onde conseguimos criar "ambientes virtuais" (containers) sem a necessidade de um novo kernel. linuxcontainers.org/lxc
ambiente imutáveis evitando a frase "Na minha máquina funciona!". - Utilizado por DevOps para gerenciamento de aplicações de ponta-a-ponta isolando processos, adquirindo performance computacional.
- docker (executável) - run (utilizando para criar e executar um container) - -ti (-t abre terminal no container e -i mantém o terminal interativo) - ubuntu (imagem utilizada para criar o container) - bash (comando a ser executado pelo container - bash mantém o terminal aberto)
bash - docker (deamon docker) - run (utilizando para criar e executar um container) - -ti (-t abre terminal no container e -i mantém o terminal interativo) - -p 8080:80 (Expõe porta do container baseado em uma porta do host) - 8080 (porta do host) - 80 (porta do container) - ubuntu:16.04 (Imagem utilizada para criar o container) - bash (comando a ser executado quando o container for iniciado) Interagindo com containers
-d nginx:alpine - docker (daemon) - --name webserver (concede um nome para o container) - -v `pwd`:/usr/share/nginx/html (baseado em um diretório do host, cria um volume no container) - -d (executa o container em background e informa seu ID) - nginx:alpine (nome da imagem utilizada para criar o container) O que ocorreu?
Local onde iremos informar o que nosso container deve possuir, além de: - Instalar pacotes e bibliotecas. - Criar variáveis de ambiente. - Expor portas. - Copiar arquivos. - Configurar comando base do container. - Etc...
processo de desenvolvimento de aplicações. - Segurança: ambientes idênticos. - A frase: "Na minha máquina funciona", deixa de existir. - Ambiente de desenvolvimento = produção - Agilidade: automatização de processos.
frontapp - -v `pwd`:/usr/share/nginx/html (cria um volume no container com o conteúdo da pasta /Users/marra/Projects/in-moment-docker-frontend do host dentro de /usr/share/nginx/html no container) Ambientes imutáveis
backapp sh -c 'npm install && npm start' - sh -c 'npm install && npm start' (sh -c executa um comando shell dentro do container) E por que não "...backapp npm install && npm start"? Ambientes imutáveis
rede própria, e se comunicam pelos seus nomes. --link dbapp:mysql (dbapp é o nome do container e o outro mysql é o apelido do container a ser visível quando for linkado) Ambientes imutáveis Network BACKAPP DBAPP Mysql
rm -f (rm remove um container, -f força a remoção) - $(docker ps -aq) (ps lista os containers, -a lista all containers e -q retorna o id de all containers) $ docker rmi -f $(docker images) - docker - rmi -f (força a remoção de todas as imagens) - $(docker images) (lista todas imagens disponíveis) Ambientes imutáveis
utilizado) - services (declaração dos serviço - containers). - container_name (nome do container) - image (imagem a ser utilizada para criar o container) - ports (mapeamento de portas) - links (quais containers serão linkados entre si) - depends_on (dependência de container) - command (comando a ser executado pelo container) Ambientes imutáveis
command) - up (cria todo o ambiente configurado do docker-compose.yml) - --build (builda ou rebuild as imagens do docker-compose.yml) Ambientes imutáveis