Por Henrique Scocco

/ Em Segurança da Informação /

Postado em

fev 18, 2021

Docker para iniciantes

É comum na área de segurança, desenvolvimento e TI em geral, ouvir muito sobre “containers” e “Docker”. Afinal, o que é isso? É uma ferramenta? Um objeto? Um software?

Nesse artigo oferecemos uma breve introdução ao uso do Docker. Meu objetivo aqui, neste momento, não será explicar o conceito de containers a fundo e o que é o Docker apenas na teoria. Vou fazer, com essa breve leitura, que você já seja capaz de utilizar e criar seu próprio container. Então vamos lá!

Breve introdução ao Docker

Como o próprio nome do artigo já diz, nosso objetivo aqui será introduzir o Docker aos usuários que nunca utilizaram antes ou conhecem apenas o conceito. Portanto, não utilizarei palavras técnicas e, para explicar como ele funciona, irei fazer referências à outras tecnologias já conhecidas com o intuito de tornar o entendimento mais simples.

Em resumo, o Docker surgiu para resolver nossos problemas com dependências. Imagine um cenário no qual você está desenvolvendo uma aplicação e precisará migrá-la para outro sistema operacional (de um Ubuntu para Windows, por exemplo). A outra máquina em que será inserida a aplicação (Windows) precisará ter as mesmas dependências do que a máquina antiga (Ubuntu). Isso daria um grande trabalho não é mesmo? Pois é, para isso temos o Docker.

O Docker possui inúmeras funcionalidades e usos. O exemplo acima foi apenas para ficar claro uma de suas vantagens.

Para entender melhor o que é o Docker, o imagine como uma imagem de uma máquina virtual a qual você pode compartilhar com outros usuários. Dessa forma, os usuários podem instalar essa imagem em suas máquinas e rodar o seu software, por exemplo, sem ter problemas com dependências.  Isso se torna possível pois o Docker fornece containers virtuais que possibilitam “empacotar” todas as suas configurações e dependências dentro de uma imagem que pode ser compartilhada.

Vamos para a parte prática para entender melhor o seu funcionamento.

Instalando Docker

Antes de darmos início, instale o Docker em seu sistema operacional:

  • Para MacOS e Windows, instale o Docker Desktop;
  • Para o Windows, habilite o Hyper-V caso esteja desabilitado. Ele será necessário para utilizar o Docker;
  • Para Linux, utilize como base a documentação do próprio Docker para realizar a instalação. Não vamos detalhar o processo para a instalação no Linux, pois ela varia para cada distribuição.

Feito isso, agora vamos à prática.

Primeiramente, abra o terminal de seu sistema operacional (com o Docker já em execução), e execute o seguinte comando para validar se o Docker está funcionando corretamente:

docker –version

Se a versão do Docker for exibida, está tudo ok.

Baixando a primeira imagem

O Docker possui um site chamado Docker Hub, no qual podemos obter acesso às imagens de outros usuários e imagens padrões de fornecedores.

Pesquise por Ubuntu para encontrar a imagem do Ubuntu:

Ao acessar o repositório do Ubuntu, podemos observar no canto direito o comando que precisamos para instalar essa imagem na nossa máquina.

Neste repositório, o usuário ou distribuidor também pode inserir links para documentações e tutoriais de como utilizar o seu Docker, caso seja de seu interesse.

O Docker também possui tags, que seriam como se fossem as versões de cada imagem. Acessando a aba de tags, será possível observar outras versões do Ubuntu para baixar (não irei me aprofundar nisso agora para não perdermos o foco).

Vamos então baixar a imagem do Ubuntu para nossa máquina utilizando o seguinte comando:

docker pull ubuntu

Parece mágica, não é? Quem diria que um dia você instalaria uma imagem do Ubuntu em tão pouco tempo na sua máquina.

Bem, o que acabamos de fazer é semelhante ao processo de criação de uma máquina virtual. Ao enviar esse comando pull conseguimos baixar a imagem do Ubuntu.

Executando a imagem

Agora que temos o Ubuntu já instalado, precisamos utilizá-lo correto? Então vamos lá. Antes de executá-lo, precisamos identificar o nome da nossa imagem:

docker images

Como podemos observar, nosso Ubuntu possui o nome ubuntu,

Sabendo disso, vamos iniciar nosso Docker:

docker run -it ubuntu

O que estamos fazendo:

  • Docker = comando principal
  • run = executa um comando em um novo container
  • it = dizemos para o docker iniciar o ubuntu no modo interativo (onde exibirá o terminal para a gente)
  • Ubuntu = nome da imagem

Ao fazer isso, já teremos acesso ao nosso Ubuntu.

Sinta-se à vontade para brincar com esse Docker. Você perceberá que é semelhante a uma máquina virtual, porém sem a interface gráfica.

Um ponto importante para lembrar é que, sempre que parar de executar a imagem, todas as configurações realizadas dentro dela serão perdidas. Isto ocorre por um processo padrão de funcionalidade dos containers.

Ah, mas eu não posso então salvar minhas informações?

Sim, pode. Porém para isso, você precisará atualizar ou gerar uma nova imagem a partir de um commit (como se fosse um commit de git). Irei explicar isso nos próximos tópicos.

Processos

Durante o uso de uma imagem, seu processo se mantém em execução.

Para analisar os processos ativos:

docker ps

No entanto, caso pare de utilizar a imagem, seu processo ficará como finalizado.

Para analisar todos os processos (em execução e finalizados):

docker ps -a

Estes processos podem ser reiniciados caso deseje retomar o uso do Docker. Para isso:

docker start -i CONTAINER_ID

Podemos remover um processo finalizado com o seguinte comando:

docker rm CONTAINER_ID

Salvando as modificações

Após configurar o Ubuntu da maneira que desejar e instalar algumas dependências e pacotes específicos, você pode também salvar estas modificações, gerando uma nova imagem.

Para isso, primeiramente identifique o ID do processo da sua imagem. Em seguida, salve as modificações em uma nova imagem, da seguinte forma:

docker commit CONTAINER_ID NOVAIMAGEM

Ao fazer isso, você criará a sua própria imagem para ser utilizada. Para utilizá-la, basta seguir os mesmos procedimentos anteriormente citados.

Removendo imagem

Caso não deseje mais manter uma imagem salva em sua máquina, você pode removê-la. Para isso, primeiramente identifique o ID da imagem:

docker images

Feito isso, remova a imagem com base em seu ID:

docker rmi IMAGE_ID

Transferência de arquivos

Podemos também transferir um arquivo da nossa máquina local para dentro do Docker. Para fazer isso, precisaremos do CONTAINER_ID, que pode ser identificado pelos processos do Docker.

Identificado o CONTAINER_ID, podemos transferir arquivos com o seguinte comando:

Da máquina local para o Docker:

docker cp ARQUIVO CONTAINER_ID:/diretorio/de/destino

Do Docker para a máquina local:

docker cp CONTAINER_ID:/diretorio/arquivo diretorio/maquina/local

Exemplo:

Neste caso, estamos transferindo o arquivo teste.txt de nossa máquina local para nosso Docker Ubuntu.

Abrindo portas

O Docker também possui a funcionalidade de networking, em que podemos configurar de n formas sua comunicação e rede. Porém, por ser um tópico mais avançado, abordarei apenas o necessário e básico.

Para abrir portas no Docker, utilizamos o parâmetro -p:

docker run -it -p 100:80 ubuntu

Neste caso, estamos dizendo para o Docker que tudo que acessar a porta 100 de nossa máquina será redirecionado para a porta 80 do nosso Docker.

No entanto, caso queira configurar uma opção de redirecionamento para todas as portas da máquina (semelhante ao modo NAT das VMs), pode-se utilizar o comando abaixo:

docker run -it –net host ubuntu

Neste caso, não precisa abrir nenhuma porta, pois o Docker não ficará isolado em uma instância do container. Ele irá como se fosse “adquirir” as interfaces da sua própria máquina local, e tudo que apontar para ela, apontará para o Docker.

Enviando imagem para Docker Hub

Podemos também enviar nossa imagem para o Docker Hub que foi apresentado anteriormente, possibilitando compartilharmos nossa imagem para outros usuários.

Para fazer isso, será necessário criar uma conta no Docker Hub primeiramente.

Feito isso, logue-se na sua conta através do Docker Desktop ou utilizando o comando abaixo:

docker login

Antes de enviarmos nossa imagem, é necessário entendermos que:

  • No Docker Hub, as imagens são salvas no repositório do seu usuário. Portanto, a imagem deve conter o seguinte nome: nomedeusuário/nomedaimagem:tag
  • A tag é opcional

Portanto, vamos criar nossa imagem seguindo o formato para upload:

docker commit container_id nomedousuario/meudocker

Feito isso, agora será possível upar a imagem para o seu Docker Hub da seguinte forma:

docker push nomedeusuario/meudocker

Ao fazer isso, as imagens ficarão salvas em seu perfil do Docker Hub, no qual você poderá realizar modificações como inserir descrições para outros usuários visualizarem.

Conclusão

Agradeço se chegaram até aqui. Como citei no começo, este artigo é apenas uma introdução ao Docker, visto que ele é um mundo gigante e ficaria inviável explicar todas as funcionalidades.

Para vocês terem noção, conseguimos até fazer com que o Docker reproduza conteúdos em interface gráfica. As funcionalidades e opções são infinitas.

Espero que tenham entendido o conceito do Docker e eu tenha fornecido a bagagem necessária para poderem dar procedimento nos estudos e se aprofundarem na ferramenta.

Qualquer dúvida técnica mais avançada sobre Docker, podem entrar em contato comigo.

Deixarei abaixo a documentação da própria Docker para consultarem e aprenderem caso tenham dúvida sobre alguma funcionalidade: https://docs.docker.com/

0

Deixe uma resposta

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