Docker
Arquitetura
Hub de imagens
Images
Dockerfiles
Containers
Referências
Marcelo M. Fleury <mfleury@conviso.com.br>
Arquitetura
● Utiliza o LXC
– Linux Kernel >= 2.6.24
Arquitetura 2
● Libcontainer
– Docker >= 0.9
Hub de imagens
● Repositório central de Dockerfiles/images
– https://registry.hub.docker.com/
– Contas de usuário(criar convisoappsec?)
– Integrado com github
– Possibilidade de
● Compartilhar e pesquisar imagens
● Push image
● Pull image
Images
● Podemos comparar a um .iso de uma distro
● Entretanto:
– Hub registry
● Search, share, pull, push
– Trabalhar com herança de imagens
– Gerar tags de imagens baseado em outras imagens
– Gerar imagens a partir de um container com commits
– Reaproveitamento de espaço e processo de
build/deploy
– Possibilidade de salvar(save) e carregar
imagens(load) com tarballs
Dockerfiles
marcelo@enjoyit:~/Projetos/accuracy$ cat Dockerfile* | grep -v '^#' | cut -d'
' -f1 | sort | uniq
● ADD
● CMD
● ENV
● EXPOSE
● FROM
● MAINTAINER
● RUN
● VOLUME
● WORKDIR
Dockerfiles 2
marcelo@enjoyit:~/Projetos/accuracy$ cat
Dockerfile* | grep '^#' | cut -d' ' -f1 | sort | uniq
● #ENTRYPOINT
● #CMD
● #ONBUILD
● #USER
Dockerfile 3
● Exemplos nossos
– https://github.com/convisoappsec/accuracy/blob/master/D
ockerfile
– https://github.com/convisoappsec/accuracy/blob/master/D
ockerfile.conviso_ubuntu
– Sugestão:
● Imagem base ubuntu com
– Hardening
– Tunning SO
– Monitoring tool (MMONIT ?)
– Accounts padrão/ssh_keys
– Repositórios padrões
– Pacotes padrões
Containers
● Instalações/instancias de imagens
● Ambiente totalmente segregado, inclusive o
ambiente de rede(ip/rede própria)
● Possibilidade de diff(filesystem) entre
containers
● Realizar NAT de portas(port) host<>container
● Realizar linking entre containers, sem a
necessidade de NAT, com trafego cifrado
● Montar e compartilhar pastas entre containers
e host
Containers 2
● Possibilidade de pausar(pause) e
retornar(unpause) todos os processos sem perca
de estados
● Possibilidade de gerar snapshots(imagens) com
commits
● Rodar comandos(run), startar(start), stopar(stop) e
restartar(restart).
● Possibilidade de importar(import) e
exportar(export) os dados de um container em um
tarball
● Informações com os comandos: inspect, ps, logs
Referência: Primeiros passos
● https://www.digitalocean.com/community/tutoria
ls/como-instalar-e-utilizar-o-docker-primeiros-
passos-pt
● http://paynedigital.com/articles/2013/11/introduc
tion-to-docker
Referência: Melhores práticas
● http://crosbymichael.com/dockerfile-best-
practices.html
● https://docs.docker.com/articles/dockerfile_best
-practices/
● http://www.mulle-
kybernetik.com/weblog/2014/a_little_experimen
t_to_undesta.html
Referência: Arquitetura
● http://docs.docker.com/introduction/technology/
● https://docs.docker.com/introduction/understan
ding-docker/
● http://pt.slideshare.net/rajdeep/docker-
architecturev2
Referência:
● https://docs.docker.com/articles/basics/
● https://docs.docker.com/installation/ubuntulinux/
● https://docs.docker.com/userguide/dockerlinks/
● https://docs.docker.com/articles/networking/
● https://docs.docker.com/userguide/dockervolum
es/
Referência: News
● http://www.infoq.com/news/2014/03/docker_0_
9
● http://stackoverflow.com/questions/17989306/w
hat-does-docker-add-to-just-plain-lxc
● http://www.flockport.com/lxc-vs-lxd-vs-docker-
making-sense-of-the-rapidly-evolving-container-
ecosystem/
Segurança: Virtualização e
containers
● http://www.cvedetails.com/product/28125/Dock
er-Docker.html?vendor_id=13534
● https://titanous.com/posts/docker-insecurity
● http://askubuntu.com/questions/477551/how-
can-i-use-docker-without-sudo
● https://docs.docker.com/articles/security/#docke
r-daemon-attack-surface
Referência: Virtualização e
containers
● https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/5/html/Virtualization/p
r01s05.html
● http://www.vmware.com/files/pdf/VMware_paravirtual
ization.pdf
● http://www3.nccu.edu.tw/~yuf/slides/kvm.pdf
● http://penta.debconf.org/dc8_schedule/attachments/6
4_dc8-virt.pdf
● http://en.wikipedia.org/wiki/LXC

Apresentação docker

  • 1.
  • 2.
    Arquitetura ● Utiliza oLXC – Linux Kernel >= 2.6.24
  • 3.
  • 4.
    Hub de imagens ●Repositório central de Dockerfiles/images – https://registry.hub.docker.com/ – Contas de usuário(criar convisoappsec?) – Integrado com github – Possibilidade de ● Compartilhar e pesquisar imagens ● Push image ● Pull image
  • 5.
    Images ● Podemos comparara um .iso de uma distro ● Entretanto: – Hub registry ● Search, share, pull, push – Trabalhar com herança de imagens – Gerar tags de imagens baseado em outras imagens – Gerar imagens a partir de um container com commits – Reaproveitamento de espaço e processo de build/deploy – Possibilidade de salvar(save) e carregar imagens(load) com tarballs
  • 6.
    Dockerfiles marcelo@enjoyit:~/Projetos/accuracy$ cat Dockerfile*| grep -v '^#' | cut -d' ' -f1 | sort | uniq ● ADD ● CMD ● ENV ● EXPOSE ● FROM ● MAINTAINER ● RUN ● VOLUME ● WORKDIR
  • 7.
    Dockerfiles 2 marcelo@enjoyit:~/Projetos/accuracy$ cat Dockerfile*| grep '^#' | cut -d' ' -f1 | sort | uniq ● #ENTRYPOINT ● #CMD ● #ONBUILD ● #USER
  • 8.
    Dockerfile 3 ● Exemplosnossos – https://github.com/convisoappsec/accuracy/blob/master/D ockerfile – https://github.com/convisoappsec/accuracy/blob/master/D ockerfile.conviso_ubuntu – Sugestão: ● Imagem base ubuntu com – Hardening – Tunning SO – Monitoring tool (MMONIT ?) – Accounts padrão/ssh_keys – Repositórios padrões – Pacotes padrões
  • 9.
    Containers ● Instalações/instancias deimagens ● Ambiente totalmente segregado, inclusive o ambiente de rede(ip/rede própria) ● Possibilidade de diff(filesystem) entre containers ● Realizar NAT de portas(port) host<>container ● Realizar linking entre containers, sem a necessidade de NAT, com trafego cifrado ● Montar e compartilhar pastas entre containers e host
  • 10.
    Containers 2 ● Possibilidadede pausar(pause) e retornar(unpause) todos os processos sem perca de estados ● Possibilidade de gerar snapshots(imagens) com commits ● Rodar comandos(run), startar(start), stopar(stop) e restartar(restart). ● Possibilidade de importar(import) e exportar(export) os dados de um container em um tarball ● Informações com os comandos: inspect, ps, logs
  • 11.
    Referência: Primeiros passos ●https://www.digitalocean.com/community/tutoria ls/como-instalar-e-utilizar-o-docker-primeiros- passos-pt ● http://paynedigital.com/articles/2013/11/introduc tion-to-docker
  • 12.
    Referência: Melhores práticas ●http://crosbymichael.com/dockerfile-best- practices.html ● https://docs.docker.com/articles/dockerfile_best -practices/ ● http://www.mulle- kybernetik.com/weblog/2014/a_little_experimen t_to_undesta.html
  • 13.
    Referência: Arquitetura ● http://docs.docker.com/introduction/technology/ ●https://docs.docker.com/introduction/understan ding-docker/ ● http://pt.slideshare.net/rajdeep/docker- architecturev2
  • 14.
    Referência: ● https://docs.docker.com/articles/basics/ ● https://docs.docker.com/installation/ubuntulinux/ ●https://docs.docker.com/userguide/dockerlinks/ ● https://docs.docker.com/articles/networking/ ● https://docs.docker.com/userguide/dockervolum es/
  • 15.
    Referência: News ● http://www.infoq.com/news/2014/03/docker_0_ 9 ●http://stackoverflow.com/questions/17989306/w hat-does-docker-add-to-just-plain-lxc ● http://www.flockport.com/lxc-vs-lxd-vs-docker- making-sense-of-the-rapidly-evolving-container- ecosystem/
  • 16.
    Segurança: Virtualização e containers ●http://www.cvedetails.com/product/28125/Dock er-Docker.html?vendor_id=13534 ● https://titanous.com/posts/docker-insecurity ● http://askubuntu.com/questions/477551/how- can-i-use-docker-without-sudo ● https://docs.docker.com/articles/security/#docke r-daemon-attack-surface
  • 17.
    Referência: Virtualização e containers ●https://access.redhat.com/documentation/en- US/Red_Hat_Enterprise_Linux/5/html/Virtualization/p r01s05.html ● http://www.vmware.com/files/pdf/VMware_paravirtual ization.pdf ● http://www3.nccu.edu.tw/~yuf/slides/kvm.pdf ● http://penta.debconf.org/dc8_schedule/attachments/6 4_dc8-virt.pdf ● http://en.wikipedia.org/wiki/LXC