Docker Básico

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Opa!

Esse é um post para mostrar os comandos básicos para administrar containers em docker.

O Docker é uma ferramenta criada para gerenciar containers, os desenvolvedores pegaram o LXC e o GIT misturaram as duas coisas e acabou saindo essa tecnologia, que por sinal é muito legal e útil.

Qual o objetivo do Docker? Fazer o deploy de aplicações de forma mais confiável.

Como ele faz isso? Quando é realizado o deploy de uma aplicação, são necessárias uma série de configurações, como por exemplo:

– Dependências do Sistema Operacional
– Dependência de bibliotecas da aplicação
– Permissões de Arquivos e Pastas
– Criação de Usuários e Grupos
– Mover,Apagar ou Renomear Arquivos

Esses são só alguns exemplos de coisas que talvez precisem ser realizadas durante o deploy de uma aplicação, pode ser também que nenhuma delas seja necessária.

Mas como o Docker resolve isso? Com o Docker é possível fazer o deploy de uma aplicação dentro de um container, fazer todos os testes possíveis e depois mandar o container inteiro para o servidor de produção, assim você pode garantir que tudo está funcionando, uma vez que foram enviadas todas as alterações citadas acima. Dessa forma o ambiente já vai configurado e o seu deploy fica muito mais confiável.

Como isso é feito? Normalmente é utilizado um cara chamado registry que é onde você hospeda as imagens do seus containers, o próprio docker disponibiliza um público para que você possa utilizar gratuitamente, para acessa-lo é só acessar esse endereço: https://hub.docker.com/.

Mas você também pode ser o seu próprio registry internamente.

Bom vamos aos comandos do docker para que você possa entender como isso é feito.

Para instar o docker na sua máquina basta seguir as instruções no site oficial:

https://docs.docker.com/engine/installation/

No meu caso, eu uso uma distro linux Debian 8, para instalar o Docker foram executadas as seguintes instruções:

Todos os comandos abaixo foram executados como root, caso você não esteja com esse usuário certifique-se de digitar sudo na frente dos comandos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
apt-get purge lxc-docker*
 
apt-get purge docker.io*
 
apt-get update
 
apt-get install apt-transport-https ca-certificates -y
 
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
 
echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
 
apt-get update
 
apt-get install docker-engine -y
 
service docker start

Para criar um container, você pode digitar a seguinte instrução:

1
docker run -ti --name teste --hostname teste ubuntu /bin/bash

Feito isso você já estará dentro do container, o seu terminal deve ter ficado da seguinte maneira:

1
root@teste:/#

Isso significa que você já está dentro do container.

Explicando alguns parâmetros.
-t Esse parâmetro definir que você quer um tty no seu container, para que você possa digitar os comandos.
-i Esse é de interative, para você poder interagir com o tty que foi dado ao seu container.

Existe também o parâmetro -d que pode ser passado em conjunto com o -ti, esse parâmetro signfica detach, ou seja, ele desprende o container do seu terminal, assim o seu container fica sendo executado em background e você não entra direto na shell dele.

Para sair do container você precisa digitar CTRL+P CTRL+Q, assim você sai do container e o mantém em execução, caso você execute um CTRL+D que é o que fazemos quando queremos sair de um terminal, você será desconectado do container e ele será parado automaticamente.

Para ver os containers em execução digite a seguinte instrução:

1
docker ps

Caso você queria ver os containers também parados adicione a opção -a.

1
docker ps -a

Quando executado o comando acima, você terá uma saída como essa:

1
2
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
b517bd4dc3d1        ubuntu              "/bin/bash"         5 minutes ago       Exited (0) About a minute ago

Sempre que for executar uma instrução em um determinado container, pode-se utilizar tanto o CONTAINER ID quando o NAME do container.

Caso você tenha parado o container sem querer utilizando o CTRL+D, para faze-lo voltar a funcionar digite o seguinte comando:

1
docker start teste

No comando acima você pode tanto usar teste que é o NAME do container quando o ID do container, que no meu caso é b517bd4dc3d1.

Para executar um comando dentro de um container, você pode utilizar a seguinte instrução:

1
docker exec -ti teste cat /etc/hosts

O comando será executado e você voltará ao terminal da máquina host.

Caso você queira abrir uma shell para digitar vários comandos você pode fazer da seguinte maneira:

1
docker exec -ti teste /bin/bash

Existe também uma opção attach para o container, por exemplo:

1
docker attach teste

Essa instrução faz com que você volte para o comando executado quando criado o container, no nosso exemplo foi executado o /bin/bash, então você terá uma shell, mas poderia ter sido executado um python /opt/teste.py, então nesse caso você não teria uma shell e o seu terminal ficaria travado.

Caso você queira ver todos os comandos que foram executados dentro de um container em execução, você pode executar a seguinte instrução:

1
docker logs teste

Pode-se ver também o consumo de um container utilizando a instrução abaixo:

1
docker stats teste

Ou até mesmo ver os processos que ocupam mais ciclos da CPU:

1
docker top teste

Uma vez que você fez todas as configurações dentro do seu container, pode-se gerar uma imagem dele para que o próximo container gerado a partir dessa imagem tenha as mesmas configurações.

Para isso executa o seguinte comando:

1
docker commit teste imagem_teste

Será gerada uma imagem baseada no container especificado.

Para ver a lista de imagens que você possui, digite a seguinte instrução:

1
docker images

A saída do comando será parecida com essa:

1
2
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
imagem_teste        latest              f0ad3b913e94        3 seconds ago       187.9 MB

Agora você pode enviar a sua imagem para o docker hub, para isso a primeira a coisa a se fazer é dar uma tag para a sua imagem com o seu login do docker hub e o nome da imagem, por exemplo:

1
docker tag imagem_teste alissonmenezes/imagem_teste:latest

Isso definiu que a minha imagem_teste possui a tag alissonmenezes/imagem_teste:latest ou seja, é a última versão da imagem.

Antes de enviar a sua imagem para o docker hub, é necessário efetuar o login, para isso digite a seguinte instrução:

1
docker login --username alissonmenezes --email=alisson.machado@responsus.com.br

Será solicitada a senha no terminal, uma vez informada e correta será exibida a seguinte mensagem:

1
2
WARNING: login credentials saved in /home/wally/.docker/config.json
Login Succeeded

Agora para envia-la para o docker hub você precisa passar a tag e não o nome da imagem, ficando o comando da seguinte forma:

1
docker push alissonmmenzes/imagem_teste

Uma vez terminado o push para o hub.docker.com, qualquer pessoa pode baixa-la executando o seguinte comando:

1
docker pull alissonmmenzes/imagem_teste

Agora você pode deletar o seu container utilizando o seguinte comando:

1
2
docker stop teste
docker rm teste

É necessário parar o container antes de deleta-lo.

O backup da imagem já foi feito no docker hub, então pode ser deletado também:

1
docker rmi imagem_teste

E é isso ai.

Valeu \o

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×
2 anos ago

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *