{"id":997,"date":"2025-02-24T08:57:28","date_gmt":"2025-02-24T11:57:28","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=997"},"modified":"2025-02-24T09:00:20","modified_gmt":"2025-02-24T12:00:20","slug":"docker-conteiners-vixi-o-que-e-isso","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/docker-conteiners-vixi-o-que-e-isso\/","title":{"rendered":"Docker. Conteiners? Vixi, o que \u00e9 isso?"},"content":{"rendered":"\n<p>Se voc\u00ea j\u00e1 ouviu algu\u00e9m falar sobre <strong>Docker<\/strong> e ficou com cara de &#8220;u\u00e9&#8221;, relaxa! Voc\u00ea n\u00e3o est\u00e1 sozinho. Esse tal de <strong>container<\/strong> parece um conceito complicado, mas a verdade \u00e9 que ele facilita muito a vida de quem desenvolve e implanta aplica\u00e7\u00f5es.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Antes de Docker, quando a gente queria rodar um sistema em outro ambiente, era um festival de erros:<br>\ud83d\udea8 &#8220;Mas funciona na minha m\u00e1quina!&#8221;<br>\ud83d\udea8 &#8220;Faltou instalar a biblioteca X&#8221;<br>\ud83d\udea8 &#8220;O servidor usa uma vers\u00e3o diferente do banco!&#8221;<\/p>\n\n\n\n<p>Com Docker, tudo isso fica mais simples porque ele empacota sua aplica\u00e7\u00e3o com tudo o que ela precisa para rodar, independente do sistema operacional ou das configura\u00e7\u00f5es da m\u00e1quina.<\/p>\n\n\n\n<p>Neste artigo, vamos entender de um jeito pr\u00e1tico o que \u00e9 um <strong>container<\/strong>, como o <strong>Docker<\/strong> funciona e como voc\u00ea pode come\u00e7ar a us\u00e1-lo agora mesmo. Preparado? Ent\u00e3o, bora l\u00e1! \ud83d\ude80<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 um Container?<\/h2>\n\n\n\n<p>Pensa num container de transporte de carga. Ele pode carregar qualquer coisa\u2014eletr\u00f4nicos, roupas, comida\u2014e ser transportado por caminh\u00e3o, navio ou trem. O importante \u00e9 que tudo l\u00e1 dentro est\u00e1 protegido e organizado.<\/p>\n\n\n\n<p>Na computa\u00e7\u00e3o, um <strong>container<\/strong> faz algo parecido: ele embala uma aplica\u00e7\u00e3o com todas as suas depend\u00eancias (bibliotecas, configura\u00e7\u00f5es, arquivos) e garante que ela vai rodar do mesmo jeito em qualquer lugar, sem depender do sistema operacional ou da m\u00e1quina onde est\u00e1 sendo executada.<\/p>\n\n\n\n<p>Agora, imagina que voc\u00ea tem um projeto em Delphi e precisa garantir que ele funcione em um servidor Linux, sem precisar instalar um monte de coisas manualmente. Com Docker, voc\u00ea coloca seu projeto dentro de um container e pronto! Ele roda sem dor de cabe\u00e7a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 o Docker?<\/h2>\n\n\n\n<p>Docker \u00e9 a plataforma que cria e gerencia containers de forma simples e eficiente. Ele permite que voc\u00ea:<\/p>\n\n\n\n<p>\u2705 Empacote sua aplica\u00e7\u00e3o e suas depend\u00eancias em um ambiente isolado.<br>\u2705 Rode a mesma aplica\u00e7\u00e3o em qualquer lugar: no seu PC, em um servidor ou na nuvem.<br>\u2705 Evite o famoso &#8220;funciona na minha m\u00e1quina, mas n\u00e3o no servidor&#8221;.<\/p>\n\n\n\n<p>Docker funciona como uma &#8220;m\u00e1quina virtual mais leve&#8221;, mas sem precisar simular um sistema operacional inteiro. Ele usa o sistema operacional do host e apenas isola os processos, o que o torna muito mais r\u00e1pido e eficiente.<\/p>\n\n\n\n<p>Agora que j\u00e1 entendemos o conceito, bora colocar a m\u00e3o na massa!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udda5 Instalando o Docker no Windows<\/h2>\n\n\n\n<p>O Docker pode ser instalado no Windows por meio do <strong>Docker Desktop<\/strong>, que \u00e9 a vers\u00e3o oficial da ferramenta para sistemas Windows e macOS. Ele inclui o Docker Engine e uma interface gr\u00e1fica para gerenciar containers de forma intuitiva.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <strong>Requisitos para instala\u00e7\u00e3o<\/strong><\/h3>\n\n\n\n<p>Antes de instalar o Docker Desktop, certifique-se de que seu computador atende aos seguintes requisitos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Windows 10 (Pro, Enterprise ou Education) ou Windows 11<\/strong> <em>(vers\u00f5es Home exigem configura\u00e7\u00f5es extras)<\/em><\/li>\n\n\n\n<li>Processador <strong>64 bits<\/strong> com suporte a <strong>virtualiza\u00e7\u00e3o (Hyper-V e WSL2)<\/strong><\/li>\n\n\n\n<li>Pelo menos <strong>4GB de RAM<\/strong><\/li>\n\n\n\n<li>Virtualiza\u00e7\u00e3o habilitada na BIOS <em>(veja abaixo como ativar se necess\u00e1rio)<\/em><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Passo 1: Habilitar a Virtualiza\u00e7\u00e3o na BIOS<\/strong><\/h3>\n\n\n\n<p>O Docker usa tecnologia de virtualiza\u00e7\u00e3o para rodar containers. Se sua m\u00e1quina n\u00e3o tiver a virtualiza\u00e7\u00e3o ativada, ser\u00e1 necess\u00e1rio habilit\u00e1-la na <strong>BIOS<\/strong>.<\/p>\n\n\n\n<p>1\ufe0f\u20e3 <strong>Reinicie seu computador e entre na BIOS<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Normalmente, voc\u00ea acessa a BIOS pressionando a tecla <strong>DEL<\/strong>, <strong>F2<\/strong> ou <strong>F12<\/strong> durante a inicializa\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p>2\ufe0f\u20e3 <strong>Ative a Virtualiza\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Procure uma op\u00e7\u00e3o chamada <strong>VT-x<\/strong> (Intel) ou <strong>AMD-V<\/strong> e ative-a.<\/li>\n\n\n\n<li>Em algumas BIOS, a op\u00e7\u00e3o aparece como <strong>Virtualization Technology<\/strong> ou <strong>SVM Mode<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>3\ufe0f\u20e3 <strong>Salve e saia da BIOS<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pressione <strong>F10<\/strong> para salvar e reiniciar o computador.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Passo 2: Baixar o Docker Desktop<\/strong><\/h3>\n\n\n\n<p>Agora que a virtualiza\u00e7\u00e3o est\u00e1 ativada, vamos baixar o Docker Desktop.<\/p>\n\n\n\n<p>1\ufe0f\u20e3 Acesse o site oficial do Docker:<br>\ud83d\udc49 <a>Baixar Docker Desktop<\/a><\/p>\n\n\n\n<p>2\ufe0f\u20e3 Clique no bot\u00e3o <strong>Download for Windows<\/strong>.<\/p>\n\n\n\n<p>3\ufe0f\u20e3 Aguarde o download do instalador (<code>Docker Desktop Installer.exe<\/code>).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Passo 3: Instalar o Docker Desktop<\/strong><\/h3>\n\n\n\n<p>1\ufe0f\u20e3 <strong>Execute o instalador<\/strong> (<code>Docker Desktop Installer.exe<\/code>).<\/p>\n\n\n\n<p>2\ufe0f\u20e3 Na tela de instala\u00e7\u00e3o, marque as seguintes op\u00e7\u00f5es:<br>\u2705 <strong>Use WSL 2 instead of Hyper-V<\/strong> <em>(recomendado, se dispon\u00edvel)<\/em><br>\u2705 <strong>Enable Windows Containers<\/strong> <em>(se voc\u00ea quiser rodar containers Windows, opcional)<\/em><\/p>\n\n\n\n<p>3\ufe0f\u20e3 Clique em <strong>Install<\/strong> e aguarde o processo ser conclu\u00eddo.<\/p>\n\n\n\n<p>4\ufe0f\u20e3 Quando terminar, clique em <strong>Close &amp; Restart<\/strong> para reiniciar o computador.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd39 <strong>Passo 4: Configurar o Docker<\/strong><\/h3>\n\n\n\n<p>1\ufe0f\u20e3 Ap\u00f3s reiniciar, abra o <strong>Docker Desktop<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pode levar alguns minutos para iniciar pela primeira vez.<\/li>\n<\/ul>\n\n\n\n<p>2\ufe0f\u20e3 Aceite os <strong>termos de uso<\/strong> e clique em <strong>Start<\/strong>.<\/p>\n\n\n\n<p>3\ufe0f\u20e3 Se aparecer uma mensagem sobre <strong>WSL 2<\/strong>, siga as instru\u00e7\u00f5es para instalar o <strong>WSL 2 Backend<\/strong> (Windows Subsystem for Linux).<\/p>\n\n\n\n<p>4\ufe0f\u20e3 Verifique se o Docker est\u00e1 rodando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No <strong>PowerShell<\/strong>, digite:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker --version\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Passo 5: Testar o Docker no Windows<\/strong><\/h3>\n\n\n\n<p>Agora, vamos rodar um container de teste para garantir que tudo est\u00e1 funcionando.<\/p>\n\n\n\n<p>1\ufe0f\u20e3 No <strong>PowerShell<\/strong>, execute:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker run hello-world\n<\/pre><\/div>\n\n\n\n<p>Se tudo estiver certo, voc\u00ea ver\u00e1 uma mensagem confirmando que o Docker est\u00e1 rodando corretamente.<\/p>\n\n\n\n<p>2\ufe0f\u20e3 Agora, vamos rodar um container real:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker run -d -p 8080:80 nginx\n<\/pre><\/div>\n\n\n\n<p>Isso inicia um servidor web <strong>Nginx<\/strong> na porta 8080.<\/p>\n\n\n\n<p>3\ufe0f\u20e3 Abra o navegador e acesse:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >http:\/\/localhost:8080\n<\/pre><\/div>\n\n\n\n<p>Se a p\u00e1gina padr\u00e3o do Nginx aparecer, parab\u00e9ns! Seu Docker est\u00e1 funcionando no Windows. \ud83d\ude80<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udea8 <strong>Poss\u00edveis Problemas e Solu\u00e7\u00f5es<\/strong><\/h3>\n\n\n\n<p>1\ufe0f\u20e3 <strong>Erro: &#8220;WSL 2 is not installed&#8221;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se aparecer essa mensagem, instale o <strong>WSL 2<\/strong> manualmente:shCopiarEditar<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >wsl --install\n<\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reinicie o computador e tente rodar o Docker novamente.<\/li>\n<\/ul>\n\n\n\n<p>2\ufe0f\u20e3 <strong>Erro: &#8220;Docker Desktop requires Windows 10 Pro or Enterprise&#8221;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se voc\u00ea usa Windows 10 Home, precisa ativar o <strong>WSL 2<\/strong> para rodar o Docker corretamente.<\/li>\n<\/ul>\n\n\n\n<p>3\ufe0f\u20e3 <strong>Erro: &#8220;Docker daemon is not running&#8221;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verifique se o Docker est\u00e1 ativo no <strong>Gerenciador de Tarefas<\/strong> (CTRL + SHIFT + ESC).<\/li>\n\n\n\n<li>Caso contr\u00e1rio, abra o <strong>Docker Desktop<\/strong> e clique em <strong>Start Docker<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>Agora que voc\u00ea instalou o Docker no Windows e rodou seu primeiro container, j\u00e1 pode come\u00e7ar a criar seus pr\u00f3prios ambientes isolados! \ud83d\ude80<\/p>\n\n\n\n<p>Se precisar de mais detalhes ou tiver d\u00favidas, s\u00f3 avisar! \ud83d\ude0a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Linux (Ubuntu\/Debian)<\/h3>\n\n\n\n<p>Se voc\u00ea \u00e9 desenvolvedor e j\u00e1 passou pela frustra\u00e7\u00e3o de configurar um ambiente que funciona na sua m\u00e1quina, mas d\u00e1 erro no servidor, ent\u00e3o <strong>Docker<\/strong> pode ser a solu\u00e7\u00e3o perfeita para voc\u00ea. Com ele, voc\u00ea pode criar <strong>containers<\/strong>, que s\u00e3o ambientes isolados onde sua aplica\u00e7\u00e3o roda de forma independente do sistema operacional ou configura\u00e7\u00f5es da m\u00e1quina.<\/p>\n\n\n\n<p>No Linux, o Docker brilha ainda mais, pois foi originalmente criado para esse sistema, garantindo uma instala\u00e7\u00e3o mais leve e eficiente. Usar Docker no Linux significa ter mais controle sobre os containers, maior compatibilidade com servidores e menos consumo de recursos comparado ao Windows.<\/p>\n\n\n\n<p>Neste guia, vamos aprender <strong>como instalar o Docker no Linux (Ubuntu\/Debian)<\/strong> e rodar nosso primeiro container de forma simples e r\u00e1pida. Se voc\u00ea nunca usou Docker antes, fique tranquilo! Vamos abordar cada etapa de forma clara e pr\u00e1tica. \ud83d\ude80<\/p>\n\n\n\n<p>Agora, bora colocar a m\u00e3o na massa e instalar o Docker no seu Linux! \ud83d\udc27<\/p>\n\n\n\n<p>1\ufe0f\u20e3 Atualize os pacotes:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >sudo apt update &amp;&amp; sudo apt upgrade -y\n<\/pre><\/div>\n\n\n\n<p>2\ufe0f\u20e3 Instale o Docker:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >sudo apt install docker.io -y\n<\/pre><\/div>\n\n\n\n<p>3\ufe0f\u20e3 Verifique se foi instalado corretamente:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker --version\n<\/pre><\/div>\n\n\n\n<p><strong>Live no YouTube<\/strong><\/p>\n\n\n\n<p>Para entender melhor como tudo funciona, assista nossa live sobre o assunnto.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Como trabalhar com Docker, Conteiner e Horse?\" width=\"640\" height=\"480\" src=\"https:\/\/www.youtube.com\/embed\/jVLntwBvVbg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd25 Principais Comandos do Docker<\/h2>\n\n\n\n<p>Agora que voc\u00ea j\u00e1 instalou o Docker, \u00e9 hora de aprender os comandos essenciais para gerenciar containers e imagens. Com esses comandos, voc\u00ea poder\u00e1 visualizar containers em execu\u00e7\u00e3o, iniciar e parar servi\u00e7os, remover containers e limpar imagens que n\u00e3o s\u00e3o mais necess\u00e1rias.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udee0 <strong>1. <code>docker ps<\/code> \u2013 Listando Containers Ativos<\/strong><\/h3>\n\n\n\n<p>O comando <code>docker ps<\/code> exibe todos os containers que est\u00e3o <strong>em execu\u00e7\u00e3o<\/strong> no momento.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker ps\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udd0d <strong>Sa\u00edda do comando:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS                   NAMES\nd5a4c2b3f12e   nginx     \"\/docker-entrypoint.\u2026\"   2 minutes ago  Up 2 minutes  0.0.0.0:8080-&gt;80\/tcp   my_nginx\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Explica\u00e7\u00e3o das colunas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CONTAINER ID<\/strong> \u2192 Identifica\u00e7\u00e3o \u00fanica do container.<\/li>\n\n\n\n<li><strong>IMAGE<\/strong> \u2192 Nome da imagem utilizada.<\/li>\n\n\n\n<li><strong>COMMAND<\/strong> \u2192 Comando que est\u00e1 sendo executado dentro do container.<\/li>\n\n\n\n<li><strong>CREATED<\/strong> \u2192 Tempo desde que o container foi criado.<\/li>\n\n\n\n<li><strong>STATUS<\/strong> \u2192 Indica se o container est\u00e1 rodando e h\u00e1 quanto tempo.<\/li>\n\n\n\n<li><strong>PORTS<\/strong> \u2192 Mostra o mapeamento de portas entre o container e o host.<\/li>\n\n\n\n<li><strong>NAMES<\/strong> \u2192 Nome do container.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udc40 <strong>Exibir Containers Parados<\/strong><\/h3>\n\n\n\n<p>Por padr\u00e3o, <code>docker ps<\/code> mostra apenas os containers <strong>ativos<\/strong>. Para visualizar <strong>todos os containers<\/strong>, incluindo os <strong>parados<\/strong>, use:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker ps -a\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u25b6 <strong>2. <code>docker start<\/code> \u2013 Iniciando um Container Parado<\/strong><\/h3>\n\n\n\n<p>Se um container j\u00e1 foi criado mas est\u00e1 parado, podemos inici\u00e1-lo novamente com:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker start &lt;ID ou NOME do container&gt;\n<\/pre><\/div>\n\n\n\n<p>Exemplo:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker start d5a4c2b3f12e\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Dica:<\/strong> Voc\u00ea pode iniciar <strong>v\u00e1rios containers de uma vez<\/strong> separando os IDs por espa\u00e7o:<br><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker start container1 container2 container3\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\uded1 <strong>3. <code>docker stop<\/code> \u2013 Parando um Container em Execu\u00e7\u00e3o<\/strong><\/h3>\n\n\n\n<p>Se quiser <strong>parar<\/strong> um container que est\u00e1 rodando, utilize o comando:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker stop &lt;ID ou NOME do container&gt;\n<\/pre><\/div>\n\n\n\n<p>Exemplo:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker stop d5a4c2b3f12e\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Dica:<\/strong> Assim como no <code>start<\/code>, voc\u00ea pode parar v\u00e1rios containers ao mesmo tempo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">shCopiarEditar<\/pre>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker stop container1 container2 container3\n<\/pre><\/div>\n\n\n\n<p>Se o container <strong>n\u00e3o responder<\/strong> ao comando <code>stop<\/code>, voc\u00ea pode for\u00e7ar a parada com:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">shCopiarEditar<\/pre>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker kill &lt;ID ou NOME do container&gt;\n<\/pre><\/div>\n\n\n\n<p>A diferen\u00e7a entre <code>stop<\/code> e <code>kill<\/code> \u00e9 que <code>stop<\/code> <strong>d\u00e1 tempo para o processo encerrar normalmente<\/strong>, enquanto <code>kill<\/code> <strong>finaliza imediatamente<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udce6 <strong>4. <code>docker images<\/code> \u2013 Listando Imagens Locais<\/strong><\/h3>\n\n\n\n<p>O comando <code>docker images<\/code> exibe todas as imagens dispon\u00edveis na sua m\u00e1quina.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker images\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udd0d <strong>Sa\u00edda do comando:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >REPOSITORY      TAG       IMAGE ID       CREATED       SIZE\nnginx           latest    605c77e624dd   2 days ago   142MB\nubuntu          20.04     1318b700e415   1 week ago   73MB\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Explica\u00e7\u00e3o das colunas:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>REPOSITORY<\/strong> \u2192 Nome da imagem.<\/li>\n\n\n\n<li><strong>TAG<\/strong> \u2192 Vers\u00e3o da imagem (exemplo: <code>latest<\/code>, <code>1.0<\/code>, <code>20.04<\/code>).<\/li>\n\n\n\n<li><strong>IMAGE ID<\/strong> \u2192 Identifica\u00e7\u00e3o \u00fanica da imagem.<\/li>\n\n\n\n<li><strong>CREATED<\/strong> \u2192 Data da cria\u00e7\u00e3o da imagem.<\/li>\n\n\n\n<li><strong>SIZE<\/strong> \u2192 Tamanho da imagem no disco.<\/li>\n<\/ul>\n\n\n\n<p>Se quiser listar imagens com <strong>mais detalhes<\/strong>, use:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker images --digests --no-trunc\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\uddd1 <strong>5. <code>docker rm<\/code> \u2013 Removendo Containers<\/strong><\/h3>\n\n\n\n<p>Se voc\u00ea n\u00e3o precisa mais de um container e quer remov\u00ea-lo para liberar espa\u00e7o, use:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rm &lt;ID ou NOME do container&gt;\n<\/pre><\/div>\n\n\n\n<p>Exemplo:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rm d5a4c2b3f12e\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Dicas \u00fateis:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para remover <strong>v\u00e1rios containers<\/strong> ao mesmo tempo:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rm container1 container2 container3\n<\/pre><\/div>\n\n\n\n<p>Para remover <strong>todos os containers parados<\/strong>, sem precisar listar manualmente:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rm $(docker ps -aq)\n<\/pre><\/div>\n\n\n\n<p>\u26a0 <strong>Aten\u00e7\u00e3o!<\/strong> Se o container ainda estiver rodando, voc\u00ea <strong>precisa par\u00e1-lo primeiro<\/strong> (<code>docker stop &lt;ID><\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd25 <strong>6. <code>docker rmi<\/code> \u2013 Removendo Imagens<\/strong><\/h3>\n\n\n\n<p>Para remover <strong>imagens Docker<\/strong> que n\u00e3o est\u00e3o mais sendo usadas, utilize:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rmi &lt;IMAGE ID ou REPOSITORY&gt;\n<\/pre><\/div>\n\n\n\n<p>Exemplo:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rmi nginx\n<\/pre><\/div>\n\n\n\n<p>\ud83d\udca1 <strong>Dicas \u00fateis:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Se a imagem estiver <strong>em uso<\/strong> por algum container, voc\u00ea precisar\u00e1 primeiro <strong>remover os containers<\/strong> relacionados (<code>docker rm<\/code>).<\/li>\n\n\n\n<li>Para <strong>for\u00e7ar a remo\u00e7\u00e3o<\/strong> de uma imagem, use:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker rmi -f &lt;IMAGE ID&gt;\n<\/pre><\/div>\n\n\n\n<p>Para remover <strong>todas as imagens n\u00e3o utilizadas<\/strong>, execute:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:delphi decode:true \" >docker image prune -a\n<\/pre><\/div>\n\n\n\n<p>\ud83d\ude80 <strong>Resumo dos Comandos<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 <strong>Resumo dos Comandos<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Comando<\/th><th>Descri\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td><code>docker ps<\/code><\/td><td>Lista os containers em execu\u00e7\u00e3o<\/td><\/tr><tr><td><code>docker ps -a<\/code><\/td><td>Lista todos os containers (inclusive os parados)<\/td><\/tr><tr><td><code>docker start &lt;ID ou NOME&gt;<\/code><\/td><td>Inicia um container parado<\/td><\/tr><tr><td><code>docker stop &lt;ID ou NOME&gt;<\/code><\/td><td>Para um container em execu\u00e7\u00e3o<\/td><\/tr><tr><td><code>docker images<\/code><\/td><td>Lista todas as imagens locais<\/td><\/tr><tr><td><code>docker rm &lt;ID ou NOME&gt;<\/code><\/td><td>Remove um container<\/td><\/tr><tr><td><code>docker rmi &lt;IMAGE ID&gt;<\/code><\/td><td>Remove uma imagem<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Agora que voc\u00ea conhece os comandos b\u00e1sicos, j\u00e1 pode come\u00e7ar a gerenciar containers no Docker como um verdadeiro profissional! \ud83d\ude80\ud83d\udc33<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Participe da Comunidade no Telegram<\/h3>\n\n\n\n<p>\ud83d\ude80 Quer continuar essa discuss\u00e3o e trocar ideias com outros desenvolvedores? Junte-se \u00e0 nossa comunidade no Telegram! L\u00e1, voc\u00ea pode comentar sobre o que achou deste artigo, tirar suas d\u00favidas e compartilhar suas experi\u00eancias com Delphi e ainda discutir ou tirar suas d\u00favidas sobre os mais variados temas em uma comunidade com mais de 1.000 desenvolvedores.<\/p>\n\n\n\n<p>\ud83d\udd17 <a href=\"https:\/\/t.me\/AdrianoSantosCommunity\" target=\"_blank\" rel=\"noreferrer noopener\">Clique aqui para entrar na comunidade<\/a><\/p>\n\n\n\n<p>Te vejo l\u00e1!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfc1 Conclus\u00e3o<\/h2>\n\n\n\n<p>Docker \u00e9 uma ferramenta poderosa que facilita o desenvolvimento e a implanta\u00e7\u00e3o de aplica\u00e7\u00f5es, eliminando problemas de compatibilidade entre ambientes. Ao aprender os comandos essenciais, voc\u00ea j\u00e1 pode gerenciar containers, iniciar e parar servi\u00e7os, remover imagens desnecess\u00e1rias e manter seu ambiente Docker organizado.<\/p>\n\n\n\n<p>Se voc\u00ea est\u00e1 come\u00e7ando, a melhor maneira de aprender \u00e9 praticando! Experimente rodar containers diferentes, criar seus pr\u00f3prios <strong>Dockerfiles<\/strong> e testar como sua aplica\u00e7\u00e3o se comporta dentro de um container. Com o tempo, voc\u00ea ver\u00e1 como Docker pode tornar seu fluxo de desenvolvimento mais \u00e1gil e eficiente.<\/p>\n\n\n\n<p>Agora que voc\u00ea tem essa base, que tal explorar <strong>orquestra\u00e7\u00e3o de containers com Docker Compose<\/strong> ou at\u00e9 mesmo dar os primeiros passos com <strong>Kubernetes<\/strong>? \ud83d\ude80<\/p>\n\n\n\n<p>Se precisar de mais ajuda, \u00e9 s\u00f3 chamar! \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea j\u00e1 ouviu algu\u00e9m falar sobre Docker e ficou com cara de &#8220;u\u00e9&#8221;, relaxa! Voc\u00ea n\u00e3o est\u00e1 sozinho. Esse tal de container parece um conceito complicado, mas a verdade \u00e9 que ele facilita muito a vida de quem desenvolve e implanta aplica\u00e7\u00f5es.<\/p>\n","protected":false},"author":1,"featured_media":1005,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-997","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=997"}],"version-history":[{"count":7,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/997\/revisions"}],"predecessor-version":[{"id":1004,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/997\/revisions\/1004"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1005"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}