Article image
Arthur Vieira
Arthur Vieira20/09/2024 20:53
Compartilhe

O que é Docker? Onde Vive? O que faz?

    [PORTUGUESE]

    "Desenvolva rápido. Rode em qualquer lugar." 

    Essa breve descrição mostra a essência dessa tecnologia. O Docker surgiu com a necessidade de se resolver o problema do gasto com máquinas virtuais, no qual exigiam um número alto de espaço em disco, com isso, criou-se o sistema LXC que futuramente seria chamado de Docker. 

    O que é o Docker?

    Pense no Docker como uma caixinha que isola suas aplicações, criando um ambiente adequado para elas funcionarem em qualquer local. Você já deve ter escutado ou ainda irá escutar a clássica frase: "na minha máquina roda". Acontece muito e é de fácil solução graças a tecnologias como o Docker. 

    Imagine a seguinte situação, você está desenvolvendo um projeto em Node.Js, após um tempo, convida alguns amigos para lhe ajudarem. Quando eles clonam o projeto e tentam rodar descobrem que cada um está com uma versão diferente do Node.Js instalada. Sem o Docker, o problema seria resolvido se todos atualizassem ou combinassem que iriam usar uma versão específica do Node.Js, mas concorda comigo que esse processo é trabalhoso? Imagina ter que desinstalar o Node para ter que instalar uma mais antiga ou ter que baixar um gerenciador de pacotes do Node para procurar a versão que o projeto usa. Isso tudo é evitado com o Docker. 

    O que o Docker faz?

    Ele cria imagens que podem ser compartilhadas com qualquer pessoa. Mas o que danado são imagens? Pense que você está em uma praia, puxa o celular e tira uma foto, você registrou um momento específico, naquela hora, se tinha um clima "x", pessoas "y" a sua volta, o céu estava de uma cor "z" e tudo isso você irá se lembrar quando ver a foto. As imagens do Docker são isso, são uma espécie de registros de um ambiente em condições específicas. Pegando o exemplo que citei agora pouco, o problema seria facilmente resolvido com a criação de uma imagem com a versão específica do Node. Assim, qualquer pessoa que tivesse o projeto em mãos, não precisaria se preocupar com as dependências do projeto.  

    Containers

    Antes de dar prosseguimento, um conceito muito importante é a ideia de "container". Containers são instâncias de imagens, onde você criar suas próprias modificações para adequar a imagem ao seu projeto. Toda vez que uma imagem é executada, um novo container é criado a partir dela.

    Exemplo

    Supondo que você foi contratado para ser desenvolvedor na empresa W. Após ter conhecimento do projeto, descobre que há diversas dependências para poder executá-lo localmente em sua máquina, entre elas, Node na versão 20 e php na versão 7. Porém, antes de ter todo o trabalho de instalar as versões específicas das dependências, você descobre que um ser de bom coração configurou todo o ambiente em Docker. Observe o arquivo "docker-compose.yaml" que contém a configuração:

    services:
    node:
      image: node:20
      container_name: node_app
      working_dir: /app
      volumes:
        - ./node_app:/app
      ports:
        - "3000:3000"  
      command: ["npm", "start"]  
    php:
      image: php:7.4-apache
      container_name: php_app
      volumes:
        - ./php_app:/var/www/html
      ports:
        - "8080:80"
    

    Agora você só precisar rodar um "docker compose up --build" no terminal e pronto, todas as dependências estão instaladas para o projeto funcionar. Viu como fica simples quando configuramos um ambiente em Docker? Basta executar um comando e tudo resolvido. 

    Conclusão

    O objetivo desse artigo não foi ensinar a usar o Docker, mas sim apresentar e mostrar o quão poderoso o mesmo é. Claro, foram exemplos bem simples, mas no dia a dia, o Docker irá lhe salvar muito.

    Obrigado!

    [ENGLISH]

    “Develop fast. Run anywhere.” 

    This brief description shows the essence of this technology. Docker arose from the need to solve the problem of spending a lot of money on virtual machines, which required a lot of disk space, and so the LXC system was created, which would later be called Docker. 

    What is Docker?

    Think of Docker as a little box that isolates your applications, creating a suitable environment for them to work anywhere. You've probably heard or will hear the classic phrase: “it runs on my machine”. It happens a lot and it's easy to solve thanks to technologies like Docker. 

    Imagine the following situation: you're developing a project in Node.Js and after a while you invite some friends to help you. When they clone the project and try to run it, they discover that each one has a different version of Node.Js installed. Without Docker, the problem would be solved if everyone updated or agreed that they would use a specific version of Node.Js, but do you agree with me that this is a laborious process? Imagine having to uninstall Node in order to install an older one, or having to download a Node package manager to find the version the project uses. This is all avoided with Docker.

    What does Docker do?

    It creates images that can be shared with anyone. But what the hell are images? Think you're on a beach, you pull out your phone and take a picture, you've recorded a specific moment, at that time, if there was “x” weather, “y” people around you, the sky was a “z” color and all this you'll remember when you see the photo. That's what Docker images are, they're a kind of record of an environment in specific conditions. Taking the example I just mentioned, the problem would be easily solved by creating an image with a specific version of Node. That way, anyone with the project in hand wouldn't have to worry about the project's dependencies.  

    Containers

    Before moving on, a very important concept is the idea of a “container”. Containers are instances of images, where you can create your own modifications to adapt the image to your project. Every time an image is run, a new container is created from it.

    Example

    Suppose you've been hired to be a developer at company W. After learning about the project, you discover that there are several dependencies to be able to run it locally on your machine, including Node version 20 and php version 7. However, before you go to all the trouble of installing the specific versions of the dependencies, you discover that a kind-hearted person has set up the entire environment in Docker. Take a look at the file “docker-compose.yaml” which contains the configuration:

    services:
    node:
      image: node:20
      container_name: node_app
      working_dir: /app
      volumes:
        - ./node_app:/app
      ports:
        - "3000:3000"  
      command: ["npm", "start"]  
    php:
      image: php:7.4-apache
      container_name: php_app
      volumes:
        - ./php_app:/var/www/html
      ports:
        - "8080:80"
    

    Now you just need to run “docker compose up --build” in the terminal and that's it, all the dependencies are installed for the project to work. See how simple it is to set up a Docker environment? Just run a command and you're done. 

    Conclusion

    The aim of this article wasn't to teach you how to use Docker, but to show you how powerful it is. Of course, these were very simple examples, but in everyday life, Docker will save you a lot.

    Thank you!

    Referências/References

    https://www.istockphoto.com/br/foto/close-up-focus-on-persons-hands-typing-on-the-desktop-computer-keyboard-as-telas-gm1356364268-430554319?utm_campaign=srp_photos_top&utm_content=https%3A%2F%2Funsplash.com%2Fpt-br%2Fs%2Ffotografias%2Fcode&utm_medium=affiliate&utm_source=unsplash&utm_term=code%3A%3Areduced-affiliates%3Aquarter

    https://medium.com/@victorhugorocha/docker-o-que-s%C3%A3o-imagens-e-os-containers-df7a42a16358

    https://hub.docker.com/

    https://www.google.com/search?q=como+surgiu+o+docker&oq=como+surgiu+o+docker&gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCDMyMDJqMGoxqAIAsAIA&sourceid=chrome&ie=UTF-8

    Compartilhe
    Comentários (0)