39
Olá Docker

Olá docker

Embed Size (px)

Citation preview

Olá Docker

Marcos Ellys

marcosellys.github.io

/marcosellys

/marcosellys

[email protected]

Analista e desenvolvedor de Sistemas

Desenvolvedor na Brisanet TelecomunicaçõesBlogueiro e evangelista de boas práticas

Formado em Análise e Desenvolvimento de Sistemas

O que é Docker?

O Docker é uma tecnologia de código aberto que permite criar, executar, testar e implantar aplicações distribuídas dentro de contêineres de software. Ele permite que você empacote um software em uma unidade padronizada, contendo todo o necessário para a execução: código, runtime, ferramentas do sistema, bibliotecas do sistema, etc.

Docker permite que você implante aplicações rapidamente, de modo confiável e estável, em qualquer ambiente.

https://aws.amazon.com/pt/docker/

Quem usa

Empresas que usam Docker para desenvolver software

Ecossistema

Containers x VMS

Fonte: https://www.docker.com/what-docker#/VM

Docker não é uma Máquina Virtual

Docker é um Ambiente Virtual

Vantagens

• Portabilidade

Vantagens

• Portabilidade

• Versionamento

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

• Automatização de Implantação

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

• Automatização de Implantação

• Gerenciamento

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

• Automatização de Implantação

• Gerenciamento

• Performance

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

• Automatização de Implantação

• Gerenciamento

• Performance

• Orquestração de ambientes

Vantagens

• Portabilidade

• Versionamento

• Reutilização de componentes

• CLI e API

• Automatização de Implantação

• Gerenciamento

• Performance

• Orquestração de ambientes

• Cluster em nuvem (swarm)

Imagens Docker

As imagens são templates para criação de containers.

São estáticas e podem ser encontradas no Docker Hub ou podem ser criadas a partir de uma imagem base com Dockerfile ou com Commit.

Docker Hub

Docker Hub é um serviço de registro baseado em nuvem que permite que você vincule repositórios de código, construa imagens, teste-as e armazene.

Ele fornece um recurso centralizado para descoberta de imagens, distribuição, gerenciamento de mudanças, colaboração de usuários e equipes e automação de fluxo de trabalho em toda a linha de desenvolvimento.

https://hub.docker.com/

Containers

O Container é uma instância de uma imagem.

Os containers virtualizam o SO, dividindo-o em compartimentos virtualizados para executar aplicações em container.

Instalando Docker

Existe um artigo em português que cobre toda a parte de instalação no Ubuntu, sendo possível também instalar em outras distribuições.

Acesse https://goo.gl/6YGFl8

Sintaxe Docker

$ docker <command> [params] <image>:[tag]

Command: Ação executada.

Params: Configurações do comando.

Image: Imagem base usada.

Tag: Versão da imagem.

Como usar Docker sem sudo

$ sudo groupadd docker

Adiciona docker a um grupo.

$ sudo gpasswd -a ${USER} docker

Adiciona usuário da sessão ao grupo docker.

$ sudo service docker restart

Reinicia o Docker.

Caso necessário reinicie o sistema

Hello World

$ docker run hello-worldA partir do comando run um container vai ser criado e executado com base na imagem hello-world, caso ainda não tenha a imagem Docker vai efetuar o download da imagem no Docker Hub e só então executar criando um container.

Comandos

Listando comandos

$ docker -h

Lista todos os comandos disponíveis.

Usage: docker [OPTIONS] COMMAND [arg...]

docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

--config=~/.docker Location of client config files

-D, --debug Enable debug mode

-H, --host=[] Daemon socket(s) to connect to

-h, --help Print usage

-l, --log-level=info Set the logging level

--tls Use TLS; implied by --tlsverify

--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA

--tlscert=~/.docker/cert.pem Path to TLS certificate file

--tlskey=~/.docker/key.pem Path to TLS key file

--tlsverify Use TLS and verify the remote

-v, --version Print version information and quit

● attach Attach to a running container

● build Build an image from a Dockerfile

● commit Create a new image from a container's changes

● cp Copy files/folders between a container and the local filesystem

● create Create a new container

● diff Inspect changes on a container's filesystem

● events Get real time events from the server

● exec Run a command in a running container

● export Export a container's filesystem as a tar archive

● history Show the history of an image

● images List images

● import Import the contents from a tarball to create a filesystem image

● info Display system-wide information

● inspect Return low-level information on a container, image or task

● kill Kill one or more running containers

● load Load an image from a tar archive or STDIN

● login Log in to a Docker registry.

● logout Log out from a Docker registry.

● logs Fetch the logs of a container

● network Manage Docker networks

● node Manage Docker Swarm nodes

● pause Pause all processes within one or more containers

● port List port mappings or a specific mapping for the container

● ps List containers

● pull Pull an image or a repository from a registry

● push Push an image or a repository to a registry

● rename Rename a container

● restart Restart a container

● rm Remove one or more containers

● rmi Remove one or more images

● run Run a command in a new container

● save Save one or more images to a tar archive (streamed to STDOUT by default)

● search Search the Docker Hub for images

● service Manage Docker services

● start Start one or more stopped containers

● stats Display a live stream of container(s) resource usage statistics

● stop Stop one or more running containers

● swarm Manage Docker Swarm

● tag Tag an image into a repository

● top Display the running processes of a container

● unpause Unpause all processes within one or more containers

● update Update configuration of one or more containers

● version Show the Docker version information

● volume Manage Docker volumes

● wait Block until a container stops, then print its exit code

Abordagem prática

$ docker run -i -p 3000:3000 grafana/grafana

Próximos passos

Dockerfile

$ docker build -t="marcos/hello"

Construa suas próprias imagens

Imagens são criadas por Dockerfile ou por commit e podem ser armazenadas no Docker Hub.

Imagens podem ser exportadas e importadas também.

Docker Compose

O Composer é uma ferramenta para definir e executar aplicações multicontainers. Com o Compose você usa um arquivo para configurar os serviços da aplicação. Em seguida, usando um único comando, você cria e inicia todos os serviços.

Docker Swarm

É uma ferramenta nativa que permite a criação de clusters, podemos fazer com que diversos hosts de Docker estejam dentro do mesmo pool de recursos, facilitando assim o deploy de containers. É possível por exemplo criar um container sem necessariamente saber em qual host ele está, pois o Swarm disponibiliza uma API de integração, onde é possível realizar atividades administrativas de um container.

OBRIGADO@marcosellys