Basis Tecnologia da Informação S.A. - 2019
História
Projeto open-source
Anunciado em 15/03/2013 por Solomon Hykes
Em 2015 a empresa vale 1 bilhão de dólares
Vários projetos baseados no Docker (Rancher, Kubernetes, Mesos, …)
Tem 2 partes:
Cliente Docker (comando docker) para gerenciar
Daemon Docker (dockerd/docker-containerd) para executar
O Cliente se conecta e envia comandos ao Daemon que os executa
Cada container pode ter sua própria interface de rede
Permite conectar os containers:
Entre eles
Com mundo externo
Dois drivers por padrão:
Bridge
Overlay
Armazenamento Persistente de Dados

As imagens:
Servem para executar os containers
Contém camadas com os binários necessários para a aplicação
São criadas a partir de instruções em um Dockerfile
São armazenadas em um registro
São versionadas
FROM openjdk:8-jre-alpine
RUN apk --no-cache add msttcorefonts-installer fontconfig && update-ms-fonts && fc-cache -f
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS JHIPSTER_SLEEP=0 JAVA_OPTS="" HOME=/home/jhipster
# Add a jhipster user to run our application so that it doesn't need to run as root
RUN adduser -D -s /bin/sh jhipster
WORKDIR /home/jhipster
ADD entrypoint.sh entrypoint.sh
RUN chmod 755 entrypoint.sh && chown jhipster:jhipster entrypoint.sh
USER jhipster
ENTRYPOINT ["./entrypoint.sh"]
EXPOSE 8081 5701/udp
ADD *.war app.war
Rodar o container: docker container run hello-world
Listar o container parado: docker container ls -a
Remover o container: docker container rm {id/name}
docker container run -p 8000:80 nginx
-p: mapeamento de portas Host → Container
docker container run -p 8000:80 -v /home/user/nginx:/usr/share/nginx/html/ nginx
-v: bind mount Host → Container
Instruções em um arquivo Dockerfile
Geração em estágios
Formato do Dockerfile:
# Comment
INSTRUCTION argumentsFROM: Continuar a construção a partir de uma imagem existente
COPY: Copiar arquivo dentro da imagem
RUN: Executar comandos dentro da imagem
ENTRYPOINT: Ponto de entrada da imagem (executado na inicialização)
CMD: Comando adicional
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
docker image build -t meu-nginx:1.0 .
Ferramenta para executar aplicações multi-containers
Serviços definidos em um arquivo yaml
Permite gerenciar os containers da aplicação
docker-compose up para iniciar os containers
Outros comandos:
docker-compose down parar e remover containers
docker-compose logs ver os logs dos containers
docker-compose scale escalar containers
docker container ls | docker ps
docker container logs | docker logs
docker container rm
docker container stats
docker container ports
docker container inspect
docker image ls | docker images
docker image build
docker image pull
docker image push
docker image rm