Olá Docker
Marcos Ellys
marcosellys.github.io
/marcosellys
/marcosellys
marcos.ellys@gmail.com
Analista e desenvolvedor de Sistemas
Desenvolvedor na Brisanet Telecomunicações
Blogueiro 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-world
A 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

Olá docker

  • 1.
  • 2.
    Marcos Ellys marcosellys.github.io /marcosellys /marcosellys marcos.ellys@gmail.com Analista edesenvolvedor de Sistemas Desenvolvedor na Brisanet Telecomunicações Blogueiro e evangelista de boas práticas Formado em Análise e Desenvolvimento de Sistemas
  • 5.
    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/
  • 6.
    Quem usa Empresas queusam Docker para desenvolver software
  • 7.
  • 8.
    Containers x VMS Fonte:https://www.docker.com/what-docker#/VM
  • 9.
    Docker não éuma Máquina Virtual Docker é um Ambiente Virtual
  • 10.
  • 11.
  • 12.
  • 13.
    Vantagens • Portabilidade • Versionamento •Reutilização de componentes • CLI e API
  • 14.
    Vantagens • Portabilidade • Versionamento •Reutilização de componentes • CLI e API • Automatização de Implantação
  • 15.
    Vantagens • Portabilidade • Versionamento •Reutilização de componentes • CLI e API • Automatização de Implantação • Gerenciamento
  • 16.
    Vantagens • Portabilidade • Versionamento •Reutilização de componentes • CLI e API • Automatização de Implantação • Gerenciamento • Performance
  • 17.
    Vantagens • Portabilidade • Versionamento •Reutilização de componentes • CLI e API • Automatização de Implantação • Gerenciamento • Performance • Orquestração de ambientes
  • 18.
    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)
  • 19.
    Imagens Docker As imagenssã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.
  • 20.
    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/
  • 21.
    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.
  • 22.
    Instalando Docker Existe umartigo 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
  • 23.
    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.
  • 24.
    Como usar Dockersem 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
  • 25.
    Hello World $ dockerrun hello-world A 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.
  • 26.
  • 27.
    Listando comandos $ docker-h Lista todos os comandos disponíveis.
  • 28.
    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
  • 29.
    ● attach Attachto 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
  • 30.
    Abordagem prática $ dockerrun -i -p 3000:3000 grafana/grafana
  • 33.
  • 35.
    Dockerfile $ docker build-t="marcos/hello"
  • 36.
    Construa suas própriasimagens Imagens são criadas por Dockerfile ou por commit e podem ser armazenadas no Docker Hub. Imagens podem ser exportadas e importadas também.
  • 37.
    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.
  • 38.
    Docker Swarm É umaferramenta 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. ‘
  • 39.