Vamos entrar na caxinha
Eustáquio Mendes Guimarães
Entrar na caxinha em vez de
sair?
Entrar na caxinha em vez de
sair?
O que é docker ? História
Docker é um projeto open source (Apache License 2.0) para
empacotar, enviar e executar diversas aplicações em
containers.
Containers docker são estruturas de hardware e plataforma
que podem ser executadas em diversos ambientes, desde o
notebook até ambientes em nuvem - não requer que se
utilize uma linguagem, framework ou sistema de pacotes
específico. Isto os torna uma ferramenta para deploy e
escalabilidade de aplicativos web, bancos de dados e
serviços de backend sem depender de um provedor em
particular.
O que é docker ? História
O primeiro anúncio do Docker foi feito em 15 de Março de
2013 em um lighting talk por Solomon Hykes, CEO da
dorCloud em uma coferência de Phyton, sendo liberado,
como uma engine para deploy.
E em abril de 2015 a empresa já vale 1 bilhão de dólares.
Em outubro de 2015 já existem vários projetos: Docker
Compose, Docker Swarm, Docker Hub Enterprise, Docker
Machine, Docker engine, Docker Hub, Docker Registry,
Kitematic.
E antes ? História
Virtualização como um todo
● Mainframes (1970 -)
● Linux (1995 -)
● VMWare (~ 1999)
● User Mode Linux (2003 -)
● Provedores de VPS
● LXC
● Xen (2004 -)
● Amazon EC2 (2006 -)
● Software-Defined Networking (2008 -)
● OpenStack (2010 -)
● Dotcloud / Docker (2012 - )
O que são containers?
Quando o kernel do sistema operacional é capaz
de permitir múltiplas instâncias isoladas em
user-space, ao invés de somente uma, cada
instância pode ser chamada de container ou
software container).
Por compartilharem o mesmo kernel e parte dos
recursos, containers consomem muito menos
recursos do que uma máquina virtual.
VMs vs. Containers
Tecnologia de virtualização do
Docker
Tecnologia de virtualização do
Docker
Funcionamento
Quando o kernel do sistema operacional é capaz de permitir
múltiplas instâncias isoladas em user-space, ao invés de somente
uma, cada instância pode ser chamada de container ou software
container).
Por compartilharem o mesmo kernel e parte dos recursos,
containers consomem muito menos recursos do que uma máquina
virtual.
Tecnologia de virtualização do
Docker
Por que utilizar ? ? ?
* Rápida aprendizagem/utilização se comparado com outras
tecnologias de containers (LXC, cgroups, etc)
* Comunidade muito ativa
* Repositório publico de imagens, com compartilhamento e
colaboração
* Integração com ferramentas de DevOps (Zabbix, Puppet, Chef,
Vagrant, Ansible)
* Excelente desempenho e economia de recursos (espaço em
disco, processamento, memória)
* Versionamento de imagens e cache
Mas tem muita gente utilizando ? ? ?
Mas tem muita gente utilizando ? ? ?
* Juntamente com a cultura de DevOps, permite que você possa mais facilmente
utilizar ferramentas top de linha (linguagens, bibliotecas, etc) pois o ambiente já
está pronto para ser provisionado e, querendo ou não, algum nível de
documentação já foi gerado
* Precisa de outro sistema operacional ou distribuições além do GNU/Linux
* Personalização da imagem que será construída (ex.: Debian)
* Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede)
E por que devo entrar nessa caxinha ?
* Constante evolução (ex.: rede)
* Agiliza a entrega de software
* Aumenta a agilidade de correção. É muito mais fácil e preciso reenviar um
container completo (que já passou cliclo docker) do que enviar um patch em um
arquitetura monolítica.
* Para implementá-lo é necessário que as várias áreas da empresa contribuam, o
que gera DevOps na prática.
E por que devo entrar nessa caxinha ?
E por que devo entrar nessa caxinha ?
E como utilizar ?
* docker create cria um container mas não o inicia
* docker run cria e inicia um container em apenas uma operação
* docker stop para um container
* docker start inicia um container já criado
* docker restart reinicia um container
* docker rm deleta um container
* docker kill envia um SIGKILL para o container
* docker attach irá conectar a um container em execução
* docker wait aguarda até que o container pare
E como utilizar ?
* docker ps exibe os containers em execução (-a para todos)
* docker logs obtém logs a patir do container (saída)
* docker inspect visualiza todas as informações de um container
(notavelmente o endereço IP)
* docker events exibe os eventos a partir do daemon em tempo real
* docker port exibe mapeamento de portas (NAT)
* docker top exibe os processos em execução no container
* docker stats exibe estatísticas da utilização de recursos no container
* docker diff exibe arquivos alterados no sistema de arquivos do
container
E vamos utilizando . . .
* docker cp copia arquivos ou diretórios entre o container e o sistema de
arquivos local
* docker export -o arquivo.tar nome_container exporta o sistema de
arquivos do container para um tarball
* docker exec executa comandos em um container
Ufa… mais ???
* docker images exibe todas as imagens
* docker import importa uma imagem de um arquivo tar
* docker build cria uma imagem a partir de um Dockerfile
* docker commit cria uma imagem a patir de um container
* docker rmi remove uma imagem
* docker load carrega uma imagem a partir de um arquivo tar, incluindo
camadas e tags
* docker save salva uma imagem em um arquivo tar com todas as camadas, tags
e versões
* docker history exibe o histórico de uma imagem
* docker tag renomeia a imagem (localmente ou no hub).
Poxa, não tem nada com o
mouse? :(
Poxa, não tem nada com o
mouse? :(
Poxa, não tem nada com o
mouse? :(
Poxa, não tem nada com o
mouse? :(
E funciona legal ???
Xhost +
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
DockerUI – localhost:9000
# CLI
docker run -d php:7 php -v
# interactive shell
docker run -d -it php:7
# webserver
docker run -d -p 8080:8080 -v $PWD:/usr/src/myapp php:7 php -S 0.0.0.0:8080 -t /usr/src/myapp
docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
docker run -it --net host --cpuset-cpus 0 -m 512mb -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -v
/dev/snd:/dev/snd --privileged --name chrome jess/chrome
docker run -d 
--name firefox 
-e DISPLAY=$DISPLAY 
-v /tmp/.X11-unix:/tmp/.X11-unix 
kennethkl/firefox
docker run -d 
--name firefox 
-e DISPLAY=$DISPLAY 
-v /tmp/.X11-unix:/tmp/.X11-unix 
kennethkl/firefox
docker run -it 
--rm -e DISPLAY=$DISPLAY 
-v /tmp/.X11-unix:/tmp/.X11-unix 
jarfil/gimp-git
docker run 
--volume=/:/rootfs:ro 
--volume=/var/run:/var/run:rw 
--volume=/sys:/sys:ro 
--volume=/var/lib/docker/:/var/lib/docker:ro 
--publish=8080:8080 
--detach=true 
--name=cadvisor 
google/cadvisor:latest
E funciona legal ???
Então, isso é ….
Busque!
E outros . . .
Busque!
E outros . . .
Busque!
E outros . . .
✔ https://www.meetup.com/pt-BR/Docker-Meetup/ - Meetup do DockerDF
✔ https://telegram.me/dockerbr - Dockerbr - Telegram
✔ https://www.facebook.com/dockerdf - Facebook - DockerDF
✔ https://www.facebook.com/groups/806364762728291 - Facebook - DockerBR
✔ http://www.mundodocker.com.br/ - Site muito legal
✔ https://youtu.be/wW9CAH9nSLs - Palestra de Solomon Hykes
✔ https://www.docker.com - Site oficial
✔ https://leanpub.com/dockerparadesenvolvedores - Livro do Gomex
✔ http://techfree.com.br/ - Site do Gomex
✔ https://training.docker.com/ - Treinamento do Docker
✔ http://devops-br.org/ - Devops Brasil
✔ https://en.wikipedia.org/wiki/Operating-system-level_virtualization
✔ http://doger.io
✔ https://en.wikipedia.org/wiki/Docker_%28software%29
✔ http://docs.master.dockerproject.org/
✔ http://www.forbes.com/sites/alexkonrad/2015/04/14/docker-raises-95-million-at-
billion-valuation/
Dúvidas?
Contato:
FIM
Ou não …
Dúvidas?
Contato:
eustaquio.guimaraes@gmail.com
Não …

Freedomday2016 - Fique na caixinha, docker

  • 1.
    Vamos entrar nacaxinha Eustáquio Mendes Guimarães
  • 2.
    Entrar na caxinhaem vez de sair?
  • 3.
    Entrar na caxinhaem vez de sair?
  • 4.
    O que édocker ? História Docker é um projeto open source (Apache License 2.0) para empacotar, enviar e executar diversas aplicações em containers. Containers docker são estruturas de hardware e plataforma que podem ser executadas em diversos ambientes, desde o notebook até ambientes em nuvem - não requer que se utilize uma linguagem, framework ou sistema de pacotes específico. Isto os torna uma ferramenta para deploy e escalabilidade de aplicativos web, bancos de dados e serviços de backend sem depender de um provedor em particular.
  • 5.
    O que édocker ? História O primeiro anúncio do Docker foi feito em 15 de Março de 2013 em um lighting talk por Solomon Hykes, CEO da dorCloud em uma coferência de Phyton, sendo liberado, como uma engine para deploy. E em abril de 2015 a empresa já vale 1 bilhão de dólares. Em outubro de 2015 já existem vários projetos: Docker Compose, Docker Swarm, Docker Hub Enterprise, Docker Machine, Docker engine, Docker Hub, Docker Registry, Kitematic.
  • 6.
    E antes ?História Virtualização como um todo ● Mainframes (1970 -) ● Linux (1995 -) ● VMWare (~ 1999) ● User Mode Linux (2003 -) ● Provedores de VPS ● LXC ● Xen (2004 -) ● Amazon EC2 (2006 -) ● Software-Defined Networking (2008 -) ● OpenStack (2010 -) ● Dotcloud / Docker (2012 - )
  • 7.
    O que sãocontainers? Quando o kernel do sistema operacional é capaz de permitir múltiplas instâncias isoladas em user-space, ao invés de somente uma, cada instância pode ser chamada de container ou software container). Por compartilharem o mesmo kernel e parte dos recursos, containers consomem muito menos recursos do que uma máquina virtual.
  • 8.
  • 9.
  • 10.
    Tecnologia de virtualizaçãodo Docker Funcionamento Quando o kernel do sistema operacional é capaz de permitir múltiplas instâncias isoladas em user-space, ao invés de somente uma, cada instância pode ser chamada de container ou software container). Por compartilharem o mesmo kernel e parte dos recursos, containers consomem muito menos recursos do que uma máquina virtual.
  • 11.
  • 12.
    Por que utilizar? ? ? * Rápida aprendizagem/utilização se comparado com outras tecnologias de containers (LXC, cgroups, etc) * Comunidade muito ativa * Repositório publico de imagens, com compartilhamento e colaboração * Integração com ferramentas de DevOps (Zabbix, Puppet, Chef, Vagrant, Ansible) * Excelente desempenho e economia de recursos (espaço em disco, processamento, memória) * Versionamento de imagens e cache
  • 13.
    Mas tem muitagente utilizando ? ? ?
  • 14.
    Mas tem muitagente utilizando ? ? ?
  • 15.
    * Juntamente coma cultura de DevOps, permite que você possa mais facilmente utilizar ferramentas top de linha (linguagens, bibliotecas, etc) pois o ambiente já está pronto para ser provisionado e, querendo ou não, algum nível de documentação já foi gerado * Precisa de outro sistema operacional ou distribuições além do GNU/Linux * Personalização da imagem que será construída (ex.: Debian) * Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede) E por que devo entrar nessa caxinha ?
  • 16.
    * Constante evolução(ex.: rede) * Agiliza a entrega de software * Aumenta a agilidade de correção. É muito mais fácil e preciso reenviar um container completo (que já passou cliclo docker) do que enviar um patch em um arquitetura monolítica. * Para implementá-lo é necessário que as várias áreas da empresa contribuam, o que gera DevOps na prática. E por que devo entrar nessa caxinha ?
  • 17.
    E por quedevo entrar nessa caxinha ?
  • 18.
    E como utilizar? * docker create cria um container mas não o inicia * docker run cria e inicia um container em apenas uma operação * docker stop para um container * docker start inicia um container já criado * docker restart reinicia um container * docker rm deleta um container * docker kill envia um SIGKILL para o container * docker attach irá conectar a um container em execução * docker wait aguarda até que o container pare
  • 19.
    E como utilizar? * docker ps exibe os containers em execução (-a para todos) * docker logs obtém logs a patir do container (saída) * docker inspect visualiza todas as informações de um container (notavelmente o endereço IP) * docker events exibe os eventos a partir do daemon em tempo real * docker port exibe mapeamento de portas (NAT) * docker top exibe os processos em execução no container * docker stats exibe estatísticas da utilização de recursos no container * docker diff exibe arquivos alterados no sistema de arquivos do container
  • 20.
    E vamos utilizando. . . * docker cp copia arquivos ou diretórios entre o container e o sistema de arquivos local * docker export -o arquivo.tar nome_container exporta o sistema de arquivos do container para um tarball * docker exec executa comandos em um container
  • 21.
    Ufa… mais ??? *docker images exibe todas as imagens * docker import importa uma imagem de um arquivo tar * docker build cria uma imagem a partir de um Dockerfile * docker commit cria uma imagem a patir de um container * docker rmi remove uma imagem * docker load carrega uma imagem a partir de um arquivo tar, incluindo camadas e tags * docker save salva uma imagem em um arquivo tar com todas as camadas, tags e versões * docker history exibe o histórico de uma imagem * docker tag renomeia a imagem (localmente ou no hub).
  • 22.
    Poxa, não temnada com o mouse? :(
  • 23.
    Poxa, não temnada com o mouse? :(
  • 24.
    Poxa, não temnada com o mouse? :(
  • 25.
    Poxa, não temnada com o mouse? :(
  • 26.
    E funciona legal??? Xhost + docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker DockerUI – localhost:9000 # CLI docker run -d php:7 php -v # interactive shell docker run -d -it php:7 # webserver docker run -d -p 8080:8080 -v $PWD:/usr/src/myapp php:7 php -S 0.0.0.0:8080 -t /usr/src/myapp docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql docker run -it --net host --cpuset-cpus 0 -m 512mb -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -v /dev/snd:/dev/snd --privileged --name chrome jess/chrome docker run -d --name firefox -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix kennethkl/firefox
  • 27.
    docker run -d --name firefox -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix kennethkl/firefox docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix jarfil/gimp-git docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest E funciona legal ???
  • 28.
  • 29.
  • 30.
  • 31.
    Busque! E outros .. . ✔ https://www.meetup.com/pt-BR/Docker-Meetup/ - Meetup do DockerDF ✔ https://telegram.me/dockerbr - Dockerbr - Telegram ✔ https://www.facebook.com/dockerdf - Facebook - DockerDF ✔ https://www.facebook.com/groups/806364762728291 - Facebook - DockerBR ✔ http://www.mundodocker.com.br/ - Site muito legal ✔ https://youtu.be/wW9CAH9nSLs - Palestra de Solomon Hykes ✔ https://www.docker.com - Site oficial ✔ https://leanpub.com/dockerparadesenvolvedores - Livro do Gomex ✔ http://techfree.com.br/ - Site do Gomex ✔ https://training.docker.com/ - Treinamento do Docker ✔ http://devops-br.org/ - Devops Brasil ✔ https://en.wikipedia.org/wiki/Operating-system-level_virtualization ✔ http://doger.io ✔ https://en.wikipedia.org/wiki/Docker_%28software%29 ✔ http://docs.master.dockerproject.org/ ✔ http://www.forbes.com/sites/alexkonrad/2015/04/14/docker-raises-95-million-at- billion-valuation/
  • 32.
  • 33.