Introdução a Docker - Conceitos Básicos
Tags: docker, devops, beginners, tutorial
Published: 2019-08-05 16:50:04

---
title: Introdução a Docker - Conceitos Básicos
published: true
description: Série de artigos que falaremos a respeito de Docker e Contêineres.
tags: docker, devops, beginners, tutorial
canonical_url: https://dev.to/azure/docker---from-the-beginning-part-i-28c6
series: Aprenda Docker - Zero to Hero!
---

[![docker.png](https://i.postimg.cc/7LZsn8Tc/docker.png)](https://postimg.cc/VJ2WzhgB)

_artigo originalmente escrito pelo Chris Noring - **[AQUI](https://dev.to/softchris/5-part-docker-series-beginner-to-master-3m1b)**_

No mês passado realizamos uma votação, tanto no **[Twitter](https://twitter.com/glaucia_lemos86)** como no Facebook qual seria o tema que todos vocês gostariam de aprender. E Docker foi o tópico mais pedido e solicitado em ambas as plataformas!

E hoje estaremos iniciando mais uma série de artigos sobre Docker explicando desde conceitos básicos até conceitos mais avançados. Essa série de artigos foi baseado nos posts do meu grande amigo **[Chris Noring](https://twitter.com/chris_noring)**, que também é um Cloud Advocate e uma pessoa extremamente apaixonado por tecnologias Open Source assim como eu! 

Com isso, nos unimos e vamos realizar essa série de posts especialmente a todos vocês! Porém, além dos artigos escritos por ele, estarei realizando vídeos sobre cada tópico ensinado e com um pouco mais de conteúdos para endossar ainda mais a nossa série!

Vamos nessa?!

## O que é Docker?! 

Essa é uma pergunta bastante interessante e vou tentar resumir para todos vocês! 

**[Docker](https://www.docker.com/)** é um projeto Open source que tem como objetivo automatizar a implantação de aplicativos como contêineres e que possam ser executados na nuvem ou até mesmo localmente!

A parte mais interessante do Docker é que ele implementa contêineres em todas as camadas de uma nuvem híbrida. Entre elas, o **[Azure](https://docs.microsoft.com/azure/docker/?WT.mc_id=blog-devto-chnoring)**. 

[![image-2.png](https://i.postimg.cc/NfXWKc1k/image-2.png)](https://postimg.cc/YhpXPTDv)

E outro ponto muito interessante: você pode executar os contêineres de imagens tanto no Linux, Windows e MacOs.

Acho que já deu para entender bem o que é Docker não é mesmo?! Caso queiram saber mais detalhes, bastam acessar o link **[AQUI](https://aka.ms/AA5iyzx)**

No decorrer dessa série estarei disponibilizando: links, recursos, e-books gratuitos como material e leitura recomendada sobre o assunto! Pois não existe nada melhor do que aprender uma nova tecnologia através de livros e documentações!

## Recursos Necessários para seguir na série: 'Aprenda Docker - Zero to Hero'

Não existe um requisito obrigatório para seguir na série. Até porque a intenção dessa série é ensinar todos vocês a usarem Docker!

Porém, vamos precisar usar alguns recursos necessários que precisaremos baixar e para que assim, possamos dar continuidade a série. São eles:

- **[Download Docker Community Edition CE](https://www.docker.com/community-edition):** precisaremos baixar o Docker Community para aprendermos a realizar os comandos desde os mais básicos até os mais avançados! Essa versão é gratuita e podem baixar sem nenhum problema (tanto para usuários: Windows, Linux e MacOs)

- **[Conta no Azure - Grátis](https://azure.microsoft.com/pt-br/free/?wt.mc_id=blog-devto-chnoring):** ao decorrer dessa série, estaremos testando algumas imagens e contêineres na nuvem. E nesse caso precisaremos usar um serviço de nuvem. Nesse caso usaremos o Azure.

- **[Azure For Students - Grátis](https://azure.microsoft.com/pt-br/free/students/?wt.mc_id=blog-devto-gllemos):** caso você seja estudante de alguma Instituição de Ensino - Faculdade ou Universidade e tiver alguma conta de e-mail da sua Faculdade, tenho uma boa notícia para você! Você pode obter uma conta totalmente gratuita do **[Azure for Students](https://azure.microsoft.com/pt-br/free/students/?wt.mc_id=blog-devto-chnoring)** sem necessidade de ter um cartão de crédito e já ganha de imediato um saldo de USD 100.00 para usar os serviços Azure por 12 meses! #ficaadica

- **[Node.js](https://nodejs.org/en/):** conforme formos avançando na série, iremos usar alguns exemplos de como implementar uso de imagens e contêineres em aplicações Node.js.

- **[Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=blog-devto-gllemos):** como haverá exemplos em código, vamos usar o Visual Studio Code para desenvolver nossas aplicações.

- **[Extensão Docker - Vs Code](https://aka.ms/AA5iz0q):** estaremos usando extensão do Docker que será muito importante para quem usa o Visual Studio Code.

- **[Extensão Azure Tools - Vs Code](https://aka.ms/AA5if36):** como estaremos usando o Azure, nada melhor do que usar uma extensão integrada ao Visual Studio Code para facilitar na hora de criar uma imagem ou conteiner integrado ao Azure de maneira simples, rápida e dinâmica!

Depois de configurar todo o seu ambiente de desenvolvimento e estiver tudo certinho, já podemos dar prosseguimento a série!

## Por que usar o Docker?!

O Docker nos ajudará a criar um ambiente executável. E sem contar que você será capaz de especificar o sistema operacional que deseja usar, a versão exata de diferentes bibliotecas, diferentes variáveis de ambiente e seus valores, entre outros pontos muito importantes. Porém, o ponto mais importante é que você será capaz de executar a sua aplicação isoladamente dentro desse ambiente.

Alguns pontos que nos faz pensar o motivo em usarmos Docker:

* **onboarding:** todas as vezes que uma equipe for receber um(a) novo(a) desenvolvedor(a), precisará configurar, instalar programas, SDK's, ferramentas de desenvolvimento, banco de dados, adicionar permissões, entre outros pontos. E isso é algo que pode levar dias ou até mesmo semanas. Porém, quando o time de desenvolvimento já possui uma imagem via Docker de todos os recursos necessários que aquela pessoa desenvolvedora precisará para começar a desenvolver, com apenas um docker run já será mais do que suficiente para instalar tudo em questão de minutos! E isso agiliza bastante o processo de **onboarding** do novo(a) desenvolvedor(a).

* **possuem ambientes de desenvolvimento padrão:** sim! Esse ponto é interessante! Pois usando o Docker, você poderá criar um **DEV Staging**, bem como um ambiente de produção que sejam padronizados e iguais a todos! E isso é algo maravilhoso! Já que o Docker/ container você poderia ter ambientes que fossem semelhantes, mas que haveria pequenas diferenças e quando você for tentar descobrir um determinado bug da sua aplicação, com certeza gastaria muito tempo procurando o problema principal do bug. E muitas das vezes o bug está no código fonte, mas devido a alguma diferença no ambiente, você pode levar muito tempo para determinar a causa do problema. Com o Docker facilitará muito a equipe de desenvolvimento nessas situações, que por sinal, são situações muito comuns no dia-a-dia.

* **Ah... na minha máquina funciona**: usando o Docker container, essa frase jamais será usada. Sabe por que?! Porque como o Docker cria esses contêineres isolados, a qual você especificará exatamente o que eles devem ter, você poderá enviar contêineres para os clientes e eles executarão da mesma maneira como executa no ambiente de desenvolvimento/produção!

## Instalando Docker

Agora que já entendemos os conceitos básicos sobre Docker & Contêiner, vamos instalar o Docker na nossa máquina.

A primeira coisa que precisamos fazer é rodar o **[Docker Community Edition CE](https://www.docker.com/community-edition)**. Caso você seja um usuário Windows e não saiba como instalar o Docker de maneira correta na sua máquina, há um vídeo tutorial que ensina passo a passo como fazer através do link abaixo:

📺 **[Instalando o Docker no Windows 10](https://www.youtube.com/watch?v=Bxepw-C5a-s)**

Depois que instalar o Docker corretamente na sua máquina deverá aparecer as infos conforme o gif abaixo:

[![gif-24a53d4bbf688045d.gif](https://s3.gifyu.com/images/gif-24a53d4bbf688045d.gif)](https://gifyu.com/image/Elt0)

Se tudo estiver funcionando assim como no gif acima, então estamos preparados para desenvolver uma aplicação usando Docker!

## Palavras Finais

Conforme citado acima, estaremos ajudando a todos(as) vocês a entenderem sobre Docker - desde conceitos básicos até conceitos mais avançados e com isso, estaremos disponibilizando links, conteúdos e cursos grátis que possam complementar os estudos de todos.

Abaixo segue alguns desses recursos:

* **[Criando um aplicativo Web em contêiner com o Docker](https://docs.microsoft.com/pt-br/learn/modules/intro-to-containers/?WT.mc_id=blog-devto-gllemos)**
* **[Implantando e executando um aplicativo Web conteinerizado com o Serviço de Aplicativo do Azure](https://docs.microsoft.com/pt-br/learn/modules/deploy-run-container-app-service/?WT.mc_id=blog-devto-chnoring)**
* **[Aprendizado profundo interativo com o Jupyter, o Docker e o PyTorch na Máquina Virtual de Ciência de Dados](https://docs.microsoft.com/pt-br/learn/modules/interactive-deep-learning/?WT.mc_id=blog-devto-gllemos)**
* **[Criando e armazenando imagens de contêiner com o Registro de Contêiner do Azure](https://docs.microsoft.com/pt-br/learn/modules/build-and-store-container-images/?WT.mc_id=blog-devto-chnoring)**
* **[Executando contêineres do Docker com Instâncias de Contêiner do Azure](https://docs.microsoft.com/pt-br/learn/modules/run-docker-with-azure-container-instances/?WT.mc_id=blog-devto-gllemos)**
* **[Get Started - Docker Documentation](https://docs.docker.com/get-started/)**

Outro ponto importante, sempre depois de escrever um post, estarei disponibilizando um vídeo no meu **[Canal do Youtube](https://www.youtube.com/user/l32759)** explicando e ensinando via vídeo. Pois há pessoas que gostam de aprender uma nova tecnologia por meio de vídeos.

Caso queiram saber o calendário de vídeos, estarei disponibilizando por meio do repositório do GitHub **[AQUI](https://github.com/glaucia86/docker-zero-to-hero-series)**

Caso tenham alguma dúvida referente aos posts, podem deixar as suas dúvidas nos comentários abaixo e caso queiram dar sugestões, por favor,também nos avise! Pois essa série é feito para todos(as) vocês da Comunidade!

No próximo post, estarei explicando como desenvolver uma aplicação Node.js com Express usando o Docker. Será um post mais hands-on! Assim que aguardem!

E para ficarem por dentro dessa e de outras novidades, me sigam no twitter!

[![Twitter](https://code4coders.files.wordpress.com/2019/05/image-12.png)](https://twitter.com/glaucia_lemos86)

Até a próxima pessoal!