Docker na prática!
Helder Traci
- Formação acadêmica
- Técnico em Informática - ETEC
- Sistemas de Informação - ITE
- Engenharia de Software - FIB
- Experiência
- Desenvolvedor Web - Lecom
- Desenvolvedor Web - Finch Soluções
O que são containers?
O que são containers?
- Consistência de ambiente
- Portabilidade e Confiabilidade
-
Eficiência operacional
- Melhor aproveitamento de recursos
O que são containers?
- Produtividade do desenvolvedor
- Remove dependência e conflitos entre serviços
- Controle de versões
- Do código e das dependências
- Downgrade com facilidade
O que é?
- Disponibilize mais software, com maior rapidez
- 7 vezes mais deploys
- Transfira aplicações sem problemas
O que é?
- Melhore a produtividade do desenvolvedor
- Configuração de novos ambientes
- Padronize operações de aplicação
O que é?
Curiosidades e histórico
- Solomon Hykes começou dentro da dotCloud
- Lançado como projeto open source em Março 2013
- Março 2014 migrou de LXC para libcontainer própria
- Outubro 2015 25,600 estrelas e 1,100 contribuidores
- Maio 2016 o time cresceu Cisco, Google, Huawei, IBM, Microsoft, e Red Hat
- Janeiro 2017 perfis no linkedin com Docker cresceram 160%
Curiosidades e histórico
- Grandes empresas continuam adotando
Fonte: datadoghq
Curiosidades e histórico
- 15% dos hosts rodando docker
Fonte: datadoghq
Curiosidades e histórico
Tipos de virtualização
- Full virtualization
- Paravirtualization
- OS Level Virtualization
- OS Level Virtualization
Tipos de virtualização
Containers
X VMs
Containers X VMs
Container
VM
Escalabilidade horizontal
X
vertical
Horizontal X vertical
Docker linha de comando
$ docker images // Mostra dados das imagens baixadas
$ docker pull ubuntu // Baixa a imagem pelo nome indicado
$ docker rmi ubuntu // Exclui a imagem pelo nome indicado (ou ID)
$ docker run ubuntu // Cria um container com a imagem indicada
$ docker run -it ubuntu /bin/bash // Cria um container e já entra no bash
$ docker run -d --name meu_ubuntu ubuntu // Cria um container com nome (background)
$ docker exec -it meu_ubuntu /bin/bash // Executa um comando no container
$ docker ps // Mostra dados dos containers rodando
$ docker ps -a // Mostra dados de todos os containers
$ docker rm meu_ubuntu // Exclui o container
$ docker stats meu_ubuntu // Mostra dados container (CPU, MEM, NET)
$ docker inspect meu_ubuntu // Mostra todos os dados sobre o container
Docker linha de comando
Dockerfile
FROM debian:jessie
ENV appDir /var/www/app/current
ENV NVM_DIR /usr/local/nvm
ENV NODE_VERSION 6.0.0
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
RUN apt-get update && apt-get install -y
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.0/install.sh | bash \
&& source $NVM_DIR/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default
RUN mkdir -p /var/www/app/current
WORKDIR ${appDir}
ADD package.json ./
RUN npm i --production && npm i -g pm2
ADD . /var/www/app/current
EXPOSE 4500
CMD ["pm2", "start", "processes.json", "--no-daemon", "--node-args"]
Dockerfile
Dockercompose
web:
build: ./app
ports:
- "3030:3000"
links:
- "db:redis"
command: nodemon -L app/bin/www
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
links:
- "web:web"
db:
image: redis
Dockercompose
Prática!
Dúvidas?
Obrigado!
https://helderdiin.github.io/
https://github.com/helderdiin
@Helderdiin
Docker na prática!
By Helder Traci
Docker na prática!
A todo momento temos novas tecnologias surgindo para sarar uma dor no processo de desenvolvimento de software, desde as definições de arquitetura, até a implantação. Docker é só mais uma delas. Nessa palestra veremos desde alguns comandos básicos até a implantação de um projeto na nuvem.
- 1,072