Este documento fornece uma introdução ao Docker, incluindo sua história, propósito e terminologia. Docker permite empacotar aplicações em unidades padronizadas chamadas containers para desenvolvimento e implantação. Ele oferece vantagens como reproduzibilidade e portabilidade da infraestrutura.
2. Docker - Breve história
● Release inicial em 13/3/2013
● Iniciado como projeto interno
● Criado por Solomon Hykes
● Escrito em Go (Google)
● Open Source - http://docker.com
3. Docker - O que é?
● Tecnologia de código aberto
● Crie, execute, teste e implante aplicações.
● Empacote software em uma unidade padronizada para o
desenvolvimento.
● Utilizou LXC inicialmente, migrado para runC
(libcontainer).
● AUFS como filesystem (Another Union File System)
● Container não é VM!
4. Docker - Comunidade
● Github - Open Source
○ 180k linhas de código
○ 31k commits
○ 185 releases
○ 1.6k contribuidores
○ 149 pull requests
5. Docker - Alguns dados
● No final de 2014, 100 milhões de imagens foram
baixadas.
● Neste início de 2017, o número saltou para 8 bilhões de
imagens.
7. Docker - Por que utilizar?
● Evitamos a frase - “mas funciona na minha máquina”.
● Aplicação toda contida em uma imagem.
● Infraestrutura definida como código.
● Comunidade.
8. Docker - Terminologia
● Images - É a “planta” de nossa aplicação, que forma a
base para os containers.
● Containers - São criados por Docker Images e rodam a
aplicação atual.
● Docker Daemon - Serviço em background que roda no
host e que gerencia a construção, execução e
distribuição.
9. Docker - Terminologia
● Docker Containers - Implementação dinâmica de uma
imagem. Múltiplos containers podem vir de uma única
imagem.
● Docker Client - Linha de comando que permite que o
usuário interaja com o daemon.
● Docker Hub - O registry (repositório) para Docker Images.
16. Docker - Entrando num container
“Quero criar minha própria imagem, pois nenhuma imagem
que procurei atendeu meus requisitos.”
Podemos usar o comando docker attach para trabalhar
no container.
18. Docker - Okay, tudo pronto, e agora?
Agora temos que “empacotar” o seu container em uma
imagem.
Usamos então o comando docker commit para gerar a
imagem.
20. Docker - Terminologia
Dockerfile é:
● Simples arquivo texto onde contém uma lista de comandos.
● É uma forma simples de automatizar a criação de imagens.
● Basicamente são comandos em Linux, então não é
necessário aprender uma nova sintaxe.
21. Docker - Nginx
# imagem base
FROM nginx
# copiando arquivo para um diretório específico
COPY index.html /usr/share/nginx/html
# qual porta queremos que seja publicada
EXPOSE 80
# rodando aplicação
CMD ["nginx", "-g", "daemon off;"]
22. Docker - PHP CLI
# imagem base
FROM php:7.1-cli
# comando que irá rodar ao iniciar o container
CMD ["php", "--version"]
23. Docker - Volumes
Queremos programar localmente, ou temos dados para enviar
para dentro do container
docker run -it -v /path/to/file:/file tchelinux-app command
/file