Docker
Porquê? O quê? Como?
Por que usar Docker?
+1M
novos desenvolvedores
em 2017
Fonte: DockerCon 2018 Keynote e Docker.com
+2M 80B
aplicações
conteinerizadas no Hub
de downloads de
containers
Alguns dos benefícios
● Flexibilidade
● Eficiência
● Rapidez
● Portabilidade
● Reprodutibilidade
● Escalabilidade
● ...
DEV? CI?
Também.
● Independência
● Consistência
● Confiança
● Ecosistema
● ...
KEEP
CALM
IT WORKS
ON MY
MACHINE
O que é o Docker?
Transporte de mercadorias no início do século XX
90% do comércio
global via +700
milhões de
containers por ano
● Padronização
● Portabilidade
● Segurança
● Facilidade
● Rapidez
Fonte: The History of the shipping container
Analogia com o desenvolvimento de software...
?
Build, Ship and Run
any App, Anywhere.
Conteinerização
Formalmente chamado de virtualização a nível de sistema operacional.
O kernel permite a existência de múltiplas instâncias isoladas do espaço de
usuário. Cada instância é comumente chamada de container.
Máquinas Virtuais vs Containers
Bins/Libs Bins/Libs Bins/Libs
Host OS
Hardware
Container Engine
App A App B App C
Container
Bins/Libs Bins/Libs Bins/Libs
Hardware
Hypervisor
App A App B App C
Guest OS Guest OS Guest OS
VM
Principais Conceitos
Imagem
● Templates para criação de containers (receita de bolo)
● Somente leitura
$ docker image [COMMAND]
Imagem
● É formada por
camadas
● Camada gravável
Dockerfile
Arquivo de texto com
instruções declarativas
para a construção da imagens.
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /build
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
RUN mkdir /logs
COPY --from=build /build .
EXPOSE 80
ENTRYPOINT ["dotnet", "Web.Api.dll"]
Registry
● Aplicação server-side para armazenar e distribuir as imagens.
● Docker Hub, Azure Container Registries, Amazon ECR, Gitlab Registry S2IT
$ docker image push [OPTIONS]
$ docker image pull [OPTIONS]
Docker Hub e Docker Store
● Docker Hub
○ Registry gratuito de imagens na nuvem.
○ Permite integração com repositórios para build automático.
○ “GITHUB” para Docker (comunidade)
● Docker Store
○ Conteúdo verificado
○ Imagens submetidas para aprovação
○ Parceiros (Microsoft, Redhat, Oracle, MySql)
Container
Container é o nome dado para a segregação de processos no mesmo kernel,
de forma que o processo seja isolado o máximo possível de todo o resto do
ambiente.
$ docker container [OPTIONS]
Docker Compose
O Docker Compose é uma ferramenta para definir e gerenciar aplicações
docker com múltiplos containers. Neste contexto os containers são chamados
de serviços.
$ docker-compose [OPTIONS]
Como posso começar?
HANDS
ON
Dicas / Problemas Comuns
Dicas / Possíveis Problemas
● Execução pelo Visual Studio vs Docker-compose
● Execução no windows com comandos não suportados
● Docker-compose não reconhecido no Docker for Windows (versão >
17.12)
● Otimização (multi-Stage build, RUN … &&, etc)
Obrigado!
Contato:
Invillia
gabriel.araujo@s2it.com.br
milton.rodrigues@s2it.com.br

Docker

  • 1.
  • 2.
    Por que usarDocker?
  • 3.
    +1M novos desenvolvedores em 2017 Fonte:DockerCon 2018 Keynote e Docker.com +2M 80B aplicações conteinerizadas no Hub de downloads de containers
  • 4.
    Alguns dos benefícios ●Flexibilidade ● Eficiência ● Rapidez ● Portabilidade ● Reprodutibilidade ● Escalabilidade ● ...
  • 5.
    DEV? CI? Também. ● Independência ●Consistência ● Confiança ● Ecosistema ● ... KEEP CALM IT WORKS ON MY MACHINE
  • 6.
    O que éo Docker?
  • 7.
    Transporte de mercadoriasno início do século XX
  • 8.
    90% do comércio globalvia +700 milhões de containers por ano ● Padronização ● Portabilidade ● Segurança ● Facilidade ● Rapidez Fonte: The History of the shipping container
  • 9.
    Analogia com odesenvolvimento de software... ?
  • 10.
    Build, Ship andRun any App, Anywhere.
  • 11.
    Conteinerização Formalmente chamado devirtualização a nível de sistema operacional. O kernel permite a existência de múltiplas instâncias isoladas do espaço de usuário. Cada instância é comumente chamada de container.
  • 12.
    Máquinas Virtuais vsContainers Bins/Libs Bins/Libs Bins/Libs Host OS Hardware Container Engine App A App B App C Container Bins/Libs Bins/Libs Bins/Libs Hardware Hypervisor App A App B App C Guest OS Guest OS Guest OS VM
  • 13.
  • 14.
    Imagem ● Templates paracriação de containers (receita de bolo) ● Somente leitura $ docker image [COMMAND]
  • 15.
    Imagem ● É formadapor camadas ● Camada gravável
  • 16.
    Dockerfile Arquivo de textocom instruções declarativas para a construção da imagens. FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /build FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app RUN mkdir /logs COPY --from=build /build . EXPOSE 80 ENTRYPOINT ["dotnet", "Web.Api.dll"]
  • 17.
    Registry ● Aplicação server-sidepara armazenar e distribuir as imagens. ● Docker Hub, Azure Container Registries, Amazon ECR, Gitlab Registry S2IT $ docker image push [OPTIONS] $ docker image pull [OPTIONS]
  • 18.
    Docker Hub eDocker Store ● Docker Hub ○ Registry gratuito de imagens na nuvem. ○ Permite integração com repositórios para build automático. ○ “GITHUB” para Docker (comunidade) ● Docker Store ○ Conteúdo verificado ○ Imagens submetidas para aprovação ○ Parceiros (Microsoft, Redhat, Oracle, MySql)
  • 19.
    Container Container é onome dado para a segregação de processos no mesmo kernel, de forma que o processo seja isolado o máximo possível de todo o resto do ambiente. $ docker container [OPTIONS]
  • 20.
    Docker Compose O DockerCompose é uma ferramenta para definir e gerenciar aplicações docker com múltiplos containers. Neste contexto os containers são chamados de serviços. $ docker-compose [OPTIONS]
  • 21.
  • 22.
  • 23.
  • 24.
    Dicas / PossíveisProblemas ● Execução pelo Visual Studio vs Docker-compose ● Execução no windows com comandos não suportados ● Docker-compose não reconhecido no Docker for Windows (versão > 17.12) ● Otimização (multi-Stage build, RUN … &&, etc)
  • 25.