O documento introduz Docker e seus principais conceitos como containers, imagens e Dockerfile. Explica como usar comandos Docker como docker run para executar containers de imagens como Nginx e Ubuntu. Demonstra como mapear volumes para persistir dados e como construir imagens a partir de Dockerfile.
2. O que seria essa tal de Docker ?
Docker é uma plataforma Open Source escrito em Go, que é
uma linguagem de programação de alto desempenho
desenvolvida dentro do Google, que facilita a criação e
administração de ambientes isolados.
7. Imagem? Container?
● Images
○ “São as aplicações que queremos rodar.”
○ With a container image, we bundle the application along with its runtime and dependencies. We
use that image to create an isolated executable environment, also known as container. We can
deploy containers from a given image on the platform of our choice, such as desktops, VMs,
cloud, etc.
● Containers
○ Containers are an application-centric way to deliver high-performing, scalable applications on the
infrastructure of your choice.
○ Um Container é uma instância da imagem rodando como um processo no host.
○ São as imagens em execução
16. Docker CLI
● Opção --detached ou -d
● Opção --name
○ docker container run -p 80:80 -d --name webserver nginx
● Opção --help
○ docker --help
○ docker container --help
○ E muito outros …
17.
18. HandsOn: Ubuntu
● Hub: https://hub.docker.com/_/ubuntu/
● docker container run -a stdin -a stdout -i -t ubuntu /bin/bash
○ Opção -a / --attach
■ STDIN: Entradas do Teclado
■ STDOUT: Saídas do console
■ SDTERROR: Saídas de erros
○ Opcao -i
■ Mantém o SDTIN aberto funcionando, recebendo comandos
○ Opção -t
■ Habilita o TTY, terminal da maquina/container
○ /bin/bash
■ Comando a ser executado após a criação do container.
■ Neste caso, coisa do ubuntu
19. HandsOn: Ubuntu
● Mais simples:
○ docker container run -it ubuntu /bin/bash
● Mas isso é realmente um ubuntu ?
○ cat /etc/*release
● TASK: Criar um arquivo
● TASK: Instalar o GIT
○ apt-get update
○ apt-get install git
○ git -version
20. HandsOn: Ubuntu
● Parar o container
● Reiniciar o container
○ docker container ls -a
○ docker start ID/NAME
● Como executar comandos no container ?
○ docker container exec -it ID/NAME ls -ls
○ docker container exec -it ID/NAME touch teste.txt
● Como entrar no container ?
○ docker container exec -it ID/NAME /bin/bash
○ docker container attach ID/NAME
21. Salvando Tudo
● Commit
○ Commits gravam as alterações criadas pelo usuário em uma nova imagem
○ Cada alteração será uma nova Layer
● docker container commit -m “alguma coisa” ID_CONTAINER TAG
● docker images
● Push
○ docker login
○ docker image push TAG
25. HandsOn: MongoDB
● docker container run -it --name meu-mongo -d -p 27017:27017 mongo
● Os dados persistem se eu parar o container ?
● E se eu remover o container ?
31. Dockerfile
● Dockerfile é um documento de texto que contém todos os comandos
que o usuário pode chamar para construir uma imagem.
● Referências
○ https://docs.docker.com/engine/reference/builder/
● Exemplos
○ https://hub.docker.com/_/ubuntu/
○ https://hub.docker.com/_/debian/
○ https://hub.docker.com/_/nginx/
32. Dockerfile - FROM
● Indica qual será a imagem base
● Exemplo:
FROM ubuntu:latest
LABEL maintainer = “the docker guru”
33. Dockerfile - RUN
● Executa comandos no shell para a construção da imagem
● Cada comando resulta em uma nova layer na imagem
● Exemplo:
RUN echo “Hello Docker World”
RUN adduser -D -s /bin/sh docker.user
34. Dockerfile - EXPOSE
● Informa ao docker quais portas estão disponíveis para ser exportadas
● Exemplo:
EXPOSE 8080
EXPOSE 5432
35. Dockerfile - CMD
● Define instruções que serão executadas quando um container for
criado.
● Exemplo
CMD ["/usr/bin/wc","--help"]
CMD ["catalina.sh", "run"]
36. Dockerfile - ADD ou COPY
● Ambos irão copiar arquivos do host para a imagem no momento do
build. As diferenças são mínimas, mas o ADD pode adicionar arquivos
da rede ou extrair arquivos tar.bz, enquanto o COPY não pode.
● Exemplo:
ADD *.war app.war
COPY demo.war /tomcat/webapps
44. ● Fault-tolerant
● Scale on-demand
● Resources optimally
● Registry: Discover applications
automatically, and communicate with
each other
● External world access
● Update/rollback without any
downtime.
● ……………….