{"id":1982,"date":"2026-08-02T18:04:08","date_gmt":"2026-08-02T21:04:08","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/"},"modified":"2026-08-02T18:04:08","modified_gmt":"2026-08-02T21:04:08","slug":"aula-23-containers-linux-docker-e-lxc-na-pratica","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/","title":{"rendered":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica"},"content":{"rendered":"<p>Seja bem-vindo \u00e0 vig\u00e9sima terceira aula do curso <strong>Linux \u2014 Do Zero ao Avan\u00e7ado<\/strong>. Hoje vamos mergulhar fundo no universo dos <strong>Containers Linux<\/strong>, uma tecnologia que revolucionou a forma como desenvolvemos, distribu\u00edmos e executamos aplica\u00e7\u00f5es em ambientes de produ\u00e7\u00e3o. Containers Linux n\u00e3o s\u00e3o m\u00e1quinas virtuais tradicionais \u2014 s\u00e3o unidades de software leves, port\u00e1teis e auto-suficientes que compartilham o kernel do sistema hospedeiro, mas isolam processos, rede e sistema de arquivos usando funcionalidades nativas do kernel como <strong>namespaces<\/strong> e <strong>cgroups<\/strong>. Nesta aula, vamos explorar as duas principais ferramentas de containeriza\u00e7\u00e3o no ecossistema Linux: o <strong>Docker<\/strong>, amplamente adotado para empacotamento e entrega de aplica\u00e7\u00f5es, e o <strong>LXC (Linux Containers)<\/strong>, que oferece um ambiente mais pr\u00f3ximo de um sistema operacional completo, ideal para virtualiza\u00e7\u00e3o leve de servidores.<\/p>\n<p>Por que isso importa para um profissional de infraestrutura ou seguran\u00e7a da informa\u00e7\u00e3o? Simples: containers est\u00e3o em toda parte. Orquestradores como Kubernetes, pipelines de CI\/CD, ambientes de desenvolvimento isolados, microsservi\u00e7os \u2014 tudo roda sobre containers. Dominar a cria\u00e7\u00e3o, configura\u00e7\u00e3o e solu\u00e7\u00e3o de problemas em <strong>Containers Linux<\/strong> \u00e9 hoje um pr\u00e9-requisito para qualquer engenheiro de plataforma, analista de infraestrutura ou especialista em DevSecOps. Em nossos projetos na JRT Technology Solutions, utilizamos diariamente essas tecnologias para provisionar ambientes homog\u00eaneos entre desenvolvimento e produ\u00e7\u00e3o, reduzir custos com virtualiza\u00e7\u00e3o e implementar pol\u00edticas r\u00edgidas de isolamento e seguran\u00e7a.<\/p>\n<p>Nesta aula, voc\u00ea vai instalar e configurar o Docker e o LXC do zero, tanto em distribui\u00e7\u00f5es baseadas em Debian (Ubuntu) quanto em Red Hat (Rocky Linux). Vamos criar containers, inspecionar seu funcionamento interno, gerenciar imagens e snapshots, mapear portas de rede e montar volumes persistentes. Cada comando ser\u00e1 explicado em detalhes, com suas flags e op\u00e7\u00f5es relevantes, e voc\u00ea ter\u00e1 acesso \u00e0s sa\u00eddas esperadas para validar cada etapa. Ao final, voc\u00ea ser\u00e1 capaz de decidir quando usar Docker ou LXC, diagnosticar os erros mais comuns e implementar boas pr\u00e1ticas de seguran\u00e7a e desempenho em ambientes containerizados.<\/p>\n<p>Prepare-se para uma das aulas mais densas e pr\u00e1ticas deste curso. O conte\u00fado foi estruturado para que voc\u00ea possa replicar cada procedimento em seu pr\u00f3prio laborat\u00f3rio \u2014 seja ele uma VM local, um servidor bare-metal ou inst\u00e2ncias na nuvem. Lembre-se: o dom\u00ednio de <strong>Containers Linux<\/strong> exige pr\u00e1tica constante. Vamos come\u00e7ar.<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<ul>\n<li>Os fundamentos do kernel Linux que tornam os containers poss\u00edveis: namespaces, cgroups, capabilities e union filesystems<\/li>\n<li>A diferen\u00e7a conceitual e pr\u00e1tica entre containers de aplica\u00e7\u00e3o (Docker) e containers de sistema (LXC)<\/li>\n<li>A instala\u00e7\u00e3o completa do <strong>Docker Engine<\/strong> no Ubuntu 24.04 LTS e no Rocky Linux 9.x, incluindo p\u00f3s-instala\u00e7\u00e3o e verifica\u00e7\u00e3o de integridade<\/li>\n<li>A instala\u00e7\u00e3o e configura\u00e7\u00e3o do <strong>LXC<\/strong> e do <strong>LXD<\/strong> nos mesmos sistemas operacionais<\/li>\n<li>Como executar containers Docker com mapeamento de portas, vari\u00e1veis de ambiente e volumes persistentes<\/li>\n<li>Como criar containers LXC privilegiados e n\u00e3o privilegiados, gerenciar snapshots e configurar perfis<\/li>\n<li>A inspe\u00e7\u00e3o de containers em tempo real com comandos de diagn\u00f3stico<\/li>\n<li>Verifica\u00e7\u00e3o completa da instala\u00e7\u00e3o com sa\u00eddas esperadas para cada sistema<\/li>\n<li>Os 5 erros mais comuns ao trabalhar com containers Linux e suas solu\u00e7\u00f5es definitivas<\/li>\n<li>Boas pr\u00e1ticas de seguran\u00e7a, otimiza\u00e7\u00e3o de imagens e limpeza de artefatos<\/li>\n<\/ul>\n<h3>Pr\u00e9-requisitos e Ambiente<\/h3>\n<p>Para acompanhar esta aula pr\u00e1tica, voc\u00ea precisa de:<\/p>\n<ol>\n<li><strong>Uma m\u00e1quina com Linux<\/strong> \u2014 recomenda-se Ubuntu Server 24.04 LTS ou Rocky Linux 9.3+, com pelo menos 4 GB de RAM, 2 vCPUs e 20 GB de disco livre. Se poss\u00edvel, prepare duas VMs, uma para cada distribui\u00e7\u00e3o, para testar ambos os m\u00e9todos de instala\u00e7\u00e3o.<\/li>\n<li><strong>Acesso root ou a um usu\u00e1rio com privil\u00e9gios sudo<\/strong> \u2014 todos os comandos de instala\u00e7\u00e3o de pacotes exigem privil\u00e9gios elevados.<\/li>\n<li><strong>Conhecimento b\u00e1sico de redes TCP\/IP<\/strong> \u2014 vamos mapear portas e inspecionar interfaces de rede virtuais. Se precisar revisar, volte \u00e0 Aula 18 (Fundamentos de Rede no Linux).<\/li>\n<li><strong>Conceitos de systemd<\/strong> \u2014 tanto o Docker quanto o LXC utilizam units do systemd. Revisite a Aula 12 se tiver d\u00favidas sobre gerenciamento de servi\u00e7os.<\/li>\n<li><strong>Um editor de texto<\/strong> \u2014 usaremos principalmente o <strong>vim<\/strong> e o <strong>nano<\/strong> para editar arquivos de configura\u00e7\u00e3o.<\/li>\n<li><strong>Conex\u00e3o com a internet<\/strong> \u2014 as instala\u00e7\u00f5es exigem reposit\u00f3rios oficiais e download de imagens.<\/li>\n<\/ol>\n<p>Se voc\u00ea estiver usando uma distribui\u00e7\u00e3o diferente (Fedora, Debian puro, AlmaLinux), os passos ser\u00e3o muito similares, com pequenas varia\u00e7\u00f5es nos gerenciadores de pacotes. Consulte a documenta\u00e7\u00e3o oficial para adapta\u00e7\u00f5es. Em nossos treinamentos na JRT Technology Solutions, padronizamos os procedimentos para as fam\u00edlias Debian e Red Hat exatamente como faremos aqui.<\/p>\n<h3>Fundamentos dos Containers Linux: Namespaces, Cgroups e Union Filesystems<\/h3>\n<p>Antes de instalarmos qualquer ferramenta, \u00e9 crucial entender o que acontece &#8220;sob o cap\u00f4&#8221; quando executamos um container. <strong>Containers Linux<\/strong> n\u00e3o s\u00e3o uma tecnologia monol\u00edtica, mas uma combina\u00e7\u00e3o inteligente de diversas funcionalidades do kernel Linux, cada uma resolvendo um problema espec\u00edfico de isolamento ou gerenciamento de recursos. Os tr\u00eas pilares fundamentais s\u00e3o:<\/p>\n<p><strong>Namespaces:<\/strong> introduzidos a partir do kernel 2.6.24, os namespaces criam vis\u00f5es particionadas dos recursos do sistema. Existem atualmente 8 tipos de namespaces no kernel moderno: <strong>PID<\/strong> (isolamento de processos), <strong>NET<\/strong> (interfaces de rede e tabelas de roteamento), <strong>MNT<\/strong> (pontos de montagem), <strong>UTS<\/strong> (hostname e dom\u00ednio NIS), <strong>IPC<\/strong> (comunica\u00e7\u00e3o interprocesso), <strong>USER<\/strong> (mapeamento de UIDs\/GIDs), <strong>CGROUP<\/strong> (vis\u00e3o dos cgroups) e <strong>TIME<\/strong> (rel\u00f3gios monot\u00f4nicos e boot time). Quando voc\u00ea inicia um container, o runtime (Docker, LXC, containerd) cria um novo conjunto de namespaces para aquele processo raiz do container, isolando-o do restante do sistema.<\/p>\n<p><strong>Cgroups (Control Groups):<\/strong> se namespaces tratam do isolamento (o que o container v\u00ea), os cgroups tratam do controle (quanto o container pode consumir). Com cgroups v1 e v2, voc\u00ea pode limitar CPU, mem\u00f3ria RAM, I\/O de disco e largura de banda de rede por grupo de processos. Sem cgroups, um container com um fork bomb ou um vazamento de mem\u00f3ria poderia derrubar o host inteiro. \u00c9 por meio dos cgroups que definimos <strong>&#8211;memory=512m<\/strong> ou <strong>&#8211;cpus=2<\/strong> nos comandos de inicializa\u00e7\u00e3o de containers.<\/p>\n<p><strong>Union Filesystems (OverlayFS, AUFS, btrfs, ZFS):<\/strong> containers s\u00e3o constru\u00eddos a partir de imagens empilhadas em camadas. Cada instru\u00e7\u00e3o em um Dockerfile (RUN, COPY, ADD) gera uma nova camada somente-leitura. Quando o container \u00e9 iniciado, uma camada fina de leitura-escrita \u00e9 adicionada no topo. Isso permite compartilhamento de camadas base entre containers, economizando espa\u00e7o em disco e acelerando deploys. O <strong>OverlayFS<\/strong> \u00e9 o driver de armazenamento padr\u00e3o na maioria das distribui\u00e7\u00f5es modernas. O LXC tamb\u00e9m pode utilizar backends de armazenamento como <strong>ZFS<\/strong>, <strong>LVM<\/strong> ou <strong>dir<\/strong> puro.<\/p>\n<p>Compreender esses tr\u00eas mecanismos permite diagnosticar problemas como &#8220;por que meu container n\u00e3o acessa a rede externa?&#8221; (namespace NET mal configurado ou bridge ausente) ou &#8220;por que meu container foi morto com OOM?&#8221; (cgroups de mem\u00f3ria estourados). Em ambientes de produ\u00e7\u00e3o na JRT Technology Solutions, ajustamos finamente os limites de cgroups para garantir isolamento estrito entre cargas de trabalho de clientes diferentes rodando no mesmo host bare-metal.<\/p>\n<h3>Instala\u00e7\u00e3o do Docker Engine no Ubuntu\/Debian e Rocky Linux<\/h3>\n<p>O Docker est\u00e1 dispon\u00edvel em duas edi\u00e7\u00f5es: <strong>Docker Desktop<\/strong> (com interface gr\u00e1fica, voltada para desenvolvedores) e <strong>Docker Engine<\/strong> (apenas daemon e CLI, ideal para servidores). Nesta aula, instalaremos o Docker Engine diretamente dos reposit\u00f3rios oficiais, m\u00e9todo recomendado para ambientes de produ\u00e7\u00e3o. Vamos seguir o procedimento completo para ambas as fam\u00edlias de distribui\u00e7\u00f5es. Cada comando ser\u00e1 executado como root ou com <strong>sudo<\/strong> prefixado.<\/p>\n<h4>Ubuntu 24.04 LTS \/ Debian 12<\/h4>\n<ol>\n<li><strong>Remover vers\u00f5es antigas<\/strong> \u2014 Pacotes como <strong>docker.io<\/strong> ou <strong>docker-compose<\/strong> dos reposit\u00f3rios da distribui\u00e7\u00e3o podem conflitar:<\/li>\n<\/ol>\n<pre><code># Remove pacotes antigos que possam existir (Docker antigo, podman, etc.)\nsudo apt-get remove -y docker docker-engine docker.io containerd runc 2>\/dev\/null\nsudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>\/dev\/null\nsudo rm -rf \/var\/lib\/docker \/etc\/docker\necho \"Limpeza conclu\u00edda \u2014 sistema pronto para instala\u00e7\u00e3o limpa do Docker.\"\n<\/code><\/pre>\n<pre><code class=\"output\">Limpeza conclu\u00edda \u2014 sistema pronto para instala\u00e7\u00e3o limpa do Docker.<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>Instalar depend\u00eancias e configurar o reposit\u00f3rio oficial<\/strong> \u2014 O Docker mant\u00e9m seu pr\u00f3prio reposit\u00f3rio APT com pacotes assinados via GPG:<\/li>\n<\/ol>\n<pre><code># Atualiza a lista de pacotes e instala depend\u00eancias\nsudo apt-get update -y\nsudo apt-get install -y ca-certificates curl gnupg lsb-release\n\n# Cria o diret\u00f3rio para chaves GPG e adiciona a chave oficial do Docker\nsudo install -m 0755 -d \/etc\/apt\/keyrings\nsudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o \/etc\/apt\/keyrings\/docker.asc\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.asc\n\n# Adiciona o reposit\u00f3rio \u00e0 lista de sources do APT\necho \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.asc] https:\/\/download.docker.com\/linux\/ubuntu $(. \/etc\/os-release && echo \"$VERSION_CODENAME\") stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list > \/dev\/null\n\n# Atualiza novamente a lista de pacotes \u2014 agora com o reposit\u00f3rio do Docker\nsudo apt-get update -y\necho \"Reposit\u00f3rio oficial do Docker adicionado com sucesso.\"\n<\/code><\/pre>\n<pre><code class=\"output\">Reposit\u00f3rio oficial do Docker adicionado com sucesso.<\/code><\/pre>\n<ol start=\"3\">\n<li><strong>Instalar os pacotes do Docker Engine<\/strong> \u2014 Instalamos o daemon (<strong>docker-ce<\/strong>), o cliente CLI (<strong>docker-ce-cli<\/strong>), o runtime de baixo n\u00edvel (<strong>containerd.io<\/strong>) e os plugins auxiliares (Buildx e Compose v2):<\/li>\n<\/ol>\n<pre><code># Instala Docker Engine, containerd e plugins\nsudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\necho \"Docker Engine instalado. Verificando a vers\u00e3o...\"\ndocker --version\n<\/code><\/pre>\n<pre><code class=\"output\">Docker version 27.1.1, build 6312585<\/code><\/pre>\n<ol start=\"4\">\n<li><strong>P\u00f3s-instala\u00e7\u00e3o \u2014 configurar o grupo docker<\/strong> \u2014 Por padr\u00e3o, o socket do Docker (<strong>\/var\/run\/docker.sock<\/strong>) pertence ao grupo <strong>docker<\/strong>. Adicionar seu usu\u00e1rio a este grupo evita digitar <strong>sudo<\/strong> em cada comando:<\/li>\n<\/ol>\n<pre><code># Cria o grupo 'docker' se n\u00e3o existir e adiciona o usu\u00e1rio atual\nsudo groupadd docker 2>\/dev\/null\nsudo usermod -aG docker $USER\n# Aplica as mudan\u00e7as de grupo sem sair da sess\u00e3o\nnewgrp docker <<< \"docker run hello-world\"\n<\/code><\/pre>\n<p>Se voc\u00ea receber uma mensagem de \"Hello from Docker!\", a instala\u00e7\u00e3o est\u00e1 funcional. Caso contr\u00e1rio, fa\u00e7a logout e login novamente para que a membership do grupo seja recarregada.<\/p>\n<h4>Rocky Linux 9.x \/ RHEL 9 \/ AlmaLinux 9<\/h4>\n<ol>\n<li><strong>Remover vers\u00f5es antigas e configurar reposit\u00f3rio<\/strong> \u2014 A fam\u00edlia Red Hat usa <strong>dnf<\/strong> e o reposit\u00f3rio oficial do Docker deve ser adicionado manualmente:<\/li>\n<\/ol>\n<pre><code># Remove vers\u00f5es antigas e configura o reposit\u00f3rio oficial Docker CE\nsudo dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc 2>\/dev\/null\nsudo dnf -y install dnf-plugins-core\nsudo dnf config-manager --add-repo https:\/\/download.docker.com\/linux\/rhel\/docker-ce.repo\n\n# Atualiza o cache de metadados e instala os pacotes\nsudo dnf makecache\nsudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\necho \"Docker instalado no Rocky Linux. Habilitando e iniciando o daemon...\"\n<\/code><\/pre>\n<pre><code class=\"output\">Docker instalado no Rocky Linux. Habilitando e iniciando o daemon...<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>Habilitar e iniciar o servi\u00e7o<\/strong> \u2014 No RHEL\/Rocky, o servi\u00e7o n\u00e3o \u00e9 iniciado automaticamente ap\u00f3s a instala\u00e7\u00e3o:<\/li>\n<\/ol>\n<pre><code># Inicia o daemon do Docker e configura para iniciar no boot\nsudo systemctl enable --now docker\nsudo systemctl status docker --no-pager -l | head -5\n<\/code><\/pre>\n<pre><code class=\"output\">\u25cf docker.service - Docker Application Container Engine\n   Loaded: loaded (\/usr\/lib\/systemd\/system\/docker.service; enabled; preset: disabled)\n   Active: active (running) since Sun 2026-08-02 10:15:22 UTC; 5s ago\n   Docs: https:\/\/docs.docker.com\n Main PID: 2341 (dockerd)\n<\/code><\/pre>\n<ol start=\"3\">\n<li><strong>Configurar o grupo docker<\/strong> \u2014 O procedimento \u00e9 id\u00eantico ao Ubuntu:<\/li>\n<\/ol>\n<pre><code>sudo groupadd docker 2>\/dev\/null\nsudo usermod -aG docker $USER\nnewgrp docker <<< \"docker run --rm hello-world\"\n<\/code><\/pre>\n<p>Com o Docker funcional em ambas as distribui\u00e7\u00f5es, voc\u00ea est\u00e1 pronto para criar e gerenciar containers de aplica\u00e7\u00e3o. A instala\u00e7\u00e3o via reposit\u00f3rio oficial garante atualiza\u00e7\u00f5es de seguran\u00e7a e compatibilidade com o ecossistema Docker.<\/p>\n<h3>Instala\u00e7\u00e3o do LXC e LXD no Ubuntu\/Debian e Rocky Linux<\/h3>\n<p>O <strong>LXC (Linux Containers)<\/strong> \u00e9 um projeto mais antigo que o Docker, focado em oferecer ambientes completos de sistema operacional dentro de containers, similares a VMs leves. O <strong>LXD<\/strong> \u00e9 um daemon que adiciona uma camada de gerenciamento sobre o LXC, fornecendo uma CLI amig\u00e1vel (<strong>lxc<\/strong>), API REST, snapshots e migra\u00e7\u00e3o ao vivo. Nosso foco ser\u00e1 no LXD, que est\u00e1 dispon\u00edvel como pacote snap (Ubuntu) ou via reposit\u00f3rios EPEL\/COPR (Rocky Linux).<\/p>\n<h4>Ubuntu 24.04 LTS (via Snap)<\/h4>\n<ol>\n<li><strong>Instalar e inicializar o LXD<\/strong> \u2014 O snap \u00e9 o m\u00e9todo recomendado para Ubuntu, pois inclui atualiza\u00e7\u00f5es cont\u00ednuas e suporte a ZFS nativo:<\/li>\n<\/ol>\n<pre><code># Instala o LXD via snap (j\u00e1 vem pr\u00e9-instalado em algumas edi\u00e7\u00f5es do Ubuntu)\nsudo snap install lxd\n# Alternativa: sudo snap refresh lxd --channel=latest\/stable\n\n# Adiciona o usu\u00e1rio atual ao grupo lxd\nsudo usermod -aG lxd $USER\nnewgrp lxd\n\n# Inicializa o LXD com configura\u00e7\u00e3o guiada interativa\nlxd init --auto\necho \"LXD inicializado com configura\u00e7\u00e3o padr\u00e3o.\"\n<\/code><\/pre>\n<pre><code class=\"output\">LXD inicializado com configura\u00e7\u00e3o padr\u00e3o.<\/code><\/pre>\n<p>O comando <strong>lxd init --auto<\/strong> cria um bridge de rede (<strong>lxdbr0<\/strong>), configura um pool de armazenamento baseado em diret\u00f3rio (<strong>\/var\/snap\/lxd\/common\/lxd\/storage-pools\/default<\/strong>) e habilita o acesso via socket Unix. Se preferir uma configura\u00e7\u00e3o personalizada (ZFS, LVM, rede espec\u00edfica), execute <strong>lxd init<\/strong> sem a flag <strong>--auto<\/strong> e responda \u00e0s perguntas interativas.<\/p>\n<h4>Rocky Linux 9.x (via EPEL + COPR)<\/h4>\n<p>No ecossistema Red Hat, o LXC\/LXD n\u00e3o est\u00e1 nos reposit\u00f3rios oficiais, mas est\u00e1 dispon\u00edvel via <strong>EPEL<\/strong> para o LXC e via <strong>COPR<\/strong> ou snap para o LXD. Aqui usaremos o snap, que garante a mesma experi\u00eancia do Ubuntu:<\/p>\n<ol>\n<li><strong>Instalar o snapd e configurar o LXD<\/strong>:<\/li>\n<\/ol>\n<pre><code># Instala EPEL (necess\u00e1rio para o snapd no Rocky)\nsudo dnf install -y epel-release\nsudo dnf update -y\n\n# Instala e habilita o snapd\nsudo dnf install -y snapd\nsudo systemctl enable --now snapd.socket\nsudo ln -s \/var\/lib\/snapd\/snap \/snap  # Ativa o suporte a snaps cl\u00e1ssicos\n\n# Instala o LXD via snap\nsudo snap install lxd\nsudo snap refresh lxd --channel=latest\/stable\n\n# Adiciona o usu\u00e1rio ao grupo lxd e inicializa\nsudo usermod -aG lxd $USER\nnewgrp lxd\nlxd init --auto\n<\/code><\/pre>\n<p>Ap\u00f3s a inicializa\u00e7\u00e3o, o daemon <strong>lxd<\/strong> estar\u00e1 escutando no socket Unix e pronto para receber comandos. Em nossos projetos na JRT Technology Solutions, utilizamos LXD para criar ambientes de laborat\u00f3rio de seguran\u00e7a, onde cada analista recebe um container completo com Kali Linux ou Parrot OS, isolado e com snapshots para rollback r\u00e1pido.<\/p>\n<h3>Primeiros Passos com Docker: Executando e Gerenciando Containers<\/h3>\n<p>Com o Docker Engine instalado e o daemon em execu\u00e7\u00e3o, vamos criar, inspecionar e gerenciar containers. Vamos come\u00e7ar com exemplos pr\u00e1ticos que demonstram os conceitos aprendidos na se\u00e7\u00e3o te\u00f3rica: namespaces, cgroups e camadas de imagem. Utilize o terminal como usu\u00e1rio com acesso ao grupo <strong>docker<\/strong>.<\/p>\n<p><strong>1. Executando um container simples e entendendo sua anatomia:<\/strong><\/p>\n<pre><code># Baixa a imagem 'alpine' (apenas ~7 MB) e executa um shell interativo\ndocker run -it --name meu-alpine alpine:latest \/bin\/sh\n# Dentro do container, inspecione o hostname e os processos vis\u00edveis:\nhostname\nps aux\nip addr show\n# Saia do container com 'exit' ou Ctrl+D\n<\/code><\/pre>\n<pre><code class=\"output\">Unable to find image 'alpine:latest' locally\nlatest: Pulling from library\/alpine\nDigest: sha256:b89d9c93e9ed3597454152d1e2a03f... \nStatus: Downloaded newer image for alpine:latest\n\/ # hostname\nd2c1a8f9b4e3\n\/ # ps aux\nPID   USER     TIME  COMMAND\n    1 root      0:00 \/bin\/sh\n    7 root      0:00 ps aux\n\/ # ip addr show\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN\n    inet 127.0.0.1\/8 scope host lo\n8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP\n    inet 172.17.0.2\/16 brd 172.17.255.255 scope global eth0\n<\/code><\/pre>\n<p>Observe: dentro do container, o <strong>PID 1<\/strong> \u00e9 o shell que iniciamos, n\u00e3o o systemd ou init do host. A interface <strong>eth0@if9<\/strong> \u00e9 um par de veth (Virtual Ethernet) \u2014 uma ponta est\u00e1 dentro do container (eth0) e a outra est\u00e1 no bridge <strong>docker0<\/strong> do host. O hostname \u00e9 um identificador \u00fanico gerado pelo Docker (ou definido pela flag <strong>--name<\/strong>). Este isolamento \u00e9 fruto dos namespaces PID, NET e UTS.<\/p>\n<p><strong>2. Containers em segundo plano com mapeamento de portas:<\/strong><\/p>\n<pre><code># Executa um servidor Nginx em segundo plano (-d), mapeando a porta 8080 do host para a 80 do container\ndocker run -d --name meu-nginx -p 8080:80 nginx:alpine\n# Verifica se est\u00e1 rodando e testa com curl\ndocker ps --filter \"name=meu-nginx\"\ncurl -s -o \/dev\/null -w \"%{http_code}\" http:\/\/localhost:8080\n<\/code><\/pre>\n<pre><code class=\"output\">CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES\na1b2c3d4e5f6   nginx:alpine   \"\/docker-entrypoint.\u2026\"  10 seconds ago  Up 9 seconds   0.0.0.0:8080->80\/tcp   meu-nginx\n200<\/code><\/pre>\n<p>O c\u00f3digo HTTP 200 confirma que o Nginx est\u00e1 servindo p\u00e1ginas. O mapeamento de portas utiliza <strong>iptables<\/strong> (ou nftables) no host para redirecionar o tr\u00e1fego da porta 8080 para o container. Voc\u00ea pode inspecionar as regras com <strong>sudo iptables -t nat -L DOCKER<\/strong>.<\/p>\n<p><strong>3. Persist\u00eancia de dados com volumes:<\/strong><\/p>\n<pre><code># Cria um diret\u00f3rio no host para armazenar dados persistentes\nmkdir -p \/home\/$USER\/nginx-data\n\n# Cria um container Nginx que monta esse diret\u00f3rio no caminho onde o Nginx serve arquivos\ndocker run -d --name nginx-volume -p 8081:80 -v \/home\/$USER\/nginx-data:\/usr\/share\/nginx\/html:ro nginx:alpine\n\n# Cria um arquivo de teste no host e verifica se \u00e9 acess\u00edvel via container\necho \"<h1>Containers Linux \u2014 Persist\u00eancia de Dados<\/h1>\" > \/home\/$USER\/nginx-data\/index.html\ncurl http:\/\/localhost:8081\n<\/code><\/pre>\n<pre><code class=\"output\"><h1>Containers Linux \u2014 Persist\u00eancia de Dados<\/h1><\/code><\/pre>\n<p>A flag <strong>-v<\/strong> (ou <strong>--volume<\/strong>) monta um bind mount do host para o container. A op\u00e7\u00e3o <strong>:ro<\/strong> torna a montagem read-only dentro do container, impedindo que processos dentro dele modifiquem os arquivos \u2014 uma pr\u00e1tica de seguran\u00e7a recomendada.<\/p>\n<p><strong>4. Inspecionando e depurando containers:<\/strong><\/p>\n<pre><code># Exibe logs de um container espec\u00edfico\ndocker logs meu-nginx --tail 20\n\n# Inspeciona detalhes em JSON (redireciona para o jq para melhor visualiza\u00e7\u00e3o)\ndocker inspect meu-nginx | jq '.[0].NetworkSettings.IPAddress'\n\n# Acessa um shell dentro de um container j\u00e1 em execu\u00e7\u00e3o (sem iniciar um novo)\ndocker exec -it meu-nginx \/bin\/sh\n\n# Dentro do container, verifique os limites de cgroups\ncat \/sys\/fs\/cgroup\/memory.max\n<\/code><\/pre>\n<pre><code class=\"output\">\"172.17.0.3\"\n\/ # cat \/sys\/fs\/cgroup\/memory.max\nmax<\/code><\/pre>\n<p>O comando <strong>docker inspect<\/strong> \u00e9 uma ferramenta poderosa que exp\u00f5e todos os detalhes de configura\u00e7\u00e3o do container: vari\u00e1veis de ambiente, volumes montados, configura\u00e7\u00f5es de rede, limites de recursos e muito mais. Em troubleshooting, \u00e9 frequentemente o primeiro comando que executamos na JRT Technology Solutions.<\/p>\n<h3>Primeiros Passos com LXC\/LXD: Criando e Gerenciando Containers de Sistema<\/h3>\n<p>Diferentemente do Docker, que executa um \u00fanico processo principal por container, o LXC inicia um sistema operacional completo \u2014 com init (systemd ou sysvinit), m\u00faltiplos processos e servi\u00e7os. Isso o torna ideal para simular servidores completos ou ambientes de laborat\u00f3rio. Vamos criar containers com LXD, gerenciar snapshots e configurar limites de recursos.<\/p>\n<p><strong>1. Listando imagens dispon\u00edveis e lan\u00e7ando um container Ubuntu:<\/strong><\/p>\n<pre><code># Lista imagens de sistemas dispon\u00edveis nos reposit\u00f3rios remotos do LXD\nlxc image list images: ubuntu | head -10\n\n# Lan\u00e7a um container chamado 'lab-ubuntu' usando a imagem Ubuntu 24.04\nlxc launch images:ubuntu\/noble lab-ubuntu\n\n# Aguarda o container inicializar e verifica seu estado\nlxc list lab-ubuntu\nlxc exec lab-ubuntu -- cat \/etc\/os-release | head -5\n<\/code><\/pre>\n<pre><code class=\"output\">+--------------+--------------+--------+------------------------------------+--------------+-----------+\n|     NAME     |    STATE     |  IPV4  |                IPV6                |     TYPE     | SNAPSHOTS |\n+--------------+--------------+--------+------------------------------------+--------------+-----------+\n| lab-ubuntu   | RUNNING      | 10.0.0.10 | fd42:abc:1234:5678::1              | CONTAINER    | 0         |\n+--------------+--------------+--------+------------------------------------+--------------+-----------+\nNAME=\"Ubuntu\"\nVERSION=\"24.04 LTS (Noble Numbat)\"\nID=ubuntu\nID_LIKE=debian\nPRETTY_NAME=\"Ubuntu 24.04 LTS\"\n<\/code><\/pre>\n<p>O container <strong>lab-ubuntu<\/strong> j\u00e1 possui um endere\u00e7o IP alocado pelo bridge <strong>lxdbr0<\/strong> (rede 10.0.0.0\/24 por padr\u00e3o). Voc\u00ea pode acessar o console diretamente com <strong>lxc exec lab-ubuntu -- bash<\/strong> ou usar <strong>lxc console lab-ubuntu<\/strong> para um console interativo.<\/p>\n<p><strong>2. Snapshots e rollback:<\/strong><\/p>\n<pre><code># Cria um snapshot chamado 'estado-limpo' antes de instalar pacotes\nlxc snapshot lab-ubuntu estado-limpo\n\n# Instala alguns pacotes e verifica\nlxc exec lab-ubuntu -- apt-get update -y\nlxc exec lab-ubuntu -- apt-get install -y apache2\nlxc exec lab-ubuntu -- systemctl status apache2 --no-pager\n\n# Restaura o snapshot para voltar ao estado anterior\nlxc stop lab-ubuntu\nlxc restore lab-ubuntu estado-limpo\nlxc start lab-ubuntu\n\n# Verifica que o Apache n\u00e3o est\u00e1 mais instalado\nlxc exec lab-ubuntu -- dpkg -l apache2 2>&1 | grep \"no packages found\"\n<\/code><\/pre>\n<pre><code class=\"output\">dpkg-query: no packages found matching apache2<\/code><\/pre>\n<p>Snapshots s\u00e3o instant\u00e2neos do estado completo do container (disco + mem\u00f3ria se houver). No LXD, eles s\u00e3o extremamente r\u00e1pidos de criar e restaurar, especialmente quando se utiliza ZFS como backend de armazenamento. Em laborat\u00f3rios de treinamento na JRT Technology Solutions, usamos snapshots extensivamente para resetar ambientes entre exerc\u00edcios.<\/p>\n<p><strong>3. Configurando limites de recursos (cgroups) no LXC:<\/strong><\/p>\n<pre><code># Define limites de CPU e mem\u00f3ria no container (2 vCPUs, 512 MB RAM)\nlxc config set lab-ubuntu limits.cpu 2\nlxc config set lab-ubuntu limits.memory 512MB\n\n# Aplica e verifica as configura\u00e7\u00f5es\nlxc config show lab-ubuntu | grep limits\n<\/code><\/pre>\n<pre><code class=\"output\">  limits.cpu: \"2\"\n  limits.memory: 512MB<\/code><\/pre>\n<p>Para validar que os limites est\u00e3o sendo aplicados, execute <strong>lxc exec lab-ubuntu -- nproc<\/strong> (deve retornar 2) e <strong>lxc exec lab-ubuntu -- free -m<\/strong> (deve mostrar ~512 MB dispon\u00edveis). Essas configura\u00e7\u00f5es utilizam cgroups v2 no kernel e s\u00e3o aplicadas instantaneamente, sem necessidade de reiniciar o container.<\/p>\n<p><strong>4. Perfis de configura\u00e7\u00e3o no LXD:<\/strong><\/p>\n<p>Perfis permitem aplicar conjuntos de configura\u00e7\u00f5es a m\u00faltiplos containers. O perfil <strong>default<\/strong> \u00e9 aplicado a todos os novos containers. Vamos criar um perfil personalizado:<\/p>\n<pre><code># Cria um novo perfil chamado 'restrito'\nlxc profile create restrito\n\n# Define limites e restri\u00e7\u00f5es de seguran\u00e7a\nlxc profile set restrito limits.cpu 1\nlxc profile set restrito limits.memory 256MB\nlxc profile set restrito security.nesting false\nlxc profile set restrito security.privileged false\n\n# Exibe o conte\u00fado do perfil\nlxc profile show restrito\n<\/code><\/pre>\n<pre><code class=\"output\">config:\n  limits.cpu: \"1\"\n  limits.memory: 256MB\n  security.nesting: \"false\"\n  security.privileged: \"false\"\ndescription: \"\"\ndevices: {}\nname: restrito<\/code><\/pre>\n<p>Para aplicar este perfil a um container, use <strong>lxc profile add NOME-DO-CONTAINER restrito<\/strong>. Perfis s\u00e3o heran\u00e7a e composi\u00e7\u00e3o poderosas que simplificam a administra\u00e7\u00e3o de dezenas de containers com pol\u00edticas consistentes.<\/p>\n<h3>Verificando a Instala\u00e7\u00e3o \/ Testando a Configura\u00e7\u00e3o<\/h3>\n<p>Esta se\u00e7\u00e3o \u00e9 cr\u00edtica: ap\u00f3s instalar e configurar Docker e LXC, execute as verifica\u00e7\u00f5es abaixo em cada sistema. As sa\u00eddas esperadas confirmam que todas as funcionalidades est\u00e3o operacionais. Se qualquer comando falhar, revise a se\u00e7\u00e3o correspondente da aula antes de prosseguir.<\/p>\n<h4>Verifica\u00e7\u00e3o do Docker<\/h4>\n<pre><code># 1. Verifica que o daemon est\u00e1 rodando e a vers\u00e3o instalada\ndocker version --format '{{.Server.Version}}'\n\n# 2. Executa o container de teste oficial e remove automaticamente (--rm)\ndocker run --rm hello-world | head -4\n\n# 3. Verifica se o usu\u00e1rio pertence ao grupo docker (sem sudo)\ngroups | grep -o docker\n\n# 4. Lista containers ativos (deve estar vazio se voc\u00ea parou todos)\ndocker ps -a\n<\/code><\/pre>\n<pre><code class=\"output\">27.1.1\nHello from Docker!\nThis message shows that your installation appears to be working correctly.\n...\ndocker\nCONTAINER ID   IMAGE         COMMAND    CREATED   STATUS    PORTS     NAMES\n<\/code><\/pre>\n<h4>Verifica\u00e7\u00e3o do LXC\/LXD<\/h4>\n<pre><code># 1. Verifica a vers\u00e3o do LXD e se o daemon est\u00e1 respondendo\nlxd --version\n\n# 2. Lista containers existentes e seus estados\nlxc list\n\n# 3. Verifica as redes gerenciadas pelo LXD\nlxc network list\n\n# 4. Verifica os pools de armazenamento\nlxc storage list\n<\/code><\/pre>\n<pre><code class=\"output\">5.21\n+--------------+---------+---------------------+------+------------+-----------+\n|     NAME     |  STATE  |        IPV4         | IPV6 |    TYPE    | SNAPSHOTS |\n+--------------+---------+---------------------+------+------------+-----------+\n| lab-ubuntu   | RUNNING | 10.0.0.10 (eth0)    |      | CONTAINER  | 0         |\n+--------------+---------+---------------------+------+------------+-----------+\n+----------+----------+----------+---------------+---------------------------+-------------+\n|   NAME   |   TYPE   | MANAGED  |      IPV4     |          IPV6             | DESCRIPTION |\n+----------+----------+----------+---------------+---------------------------+-------------+\n| lxdbr0   | bridge   | YES      | 10.0.0.1\/24   | fd42:abc:1234:5678::1\/64  |             |\n+----------+----------+----------+---------------+---------------------------+-------------+\n+----------+--------+--------+-----------------------------+\n|   NAME   | DRIVER |  SIZE  |         DESCRIPTION         |\n+----------+--------+--------+-----------------------------+\n| default  | dir    | N\/A    | Default storage pool       |\n+----------+--------+--------+-----------------------------+\n<\/code><\/pre>\n<p>Se todas as sa\u00eddas corresponderem (com pequenas varia\u00e7\u00f5es de vers\u00e3o), seu ambiente de <strong>Containers Linux<\/strong> est\u00e1 100% funcional. Parab\u00e9ns!<\/p>\n<h3>Erros Comuns e Como Resolver<\/h3>\n<p>Durante a instala\u00e7\u00e3o e opera\u00e7\u00e3o de containers, alguns erros s\u00e3o recorrentes. Abaixo, os 5 problemas mais frequentes que encontramos em campo \u2014 inclusive em suporte a clientes da JRT Technology Solutions \u2014 com suas causas, sintomas e solu\u00e7\u00f5es completas.<\/p>\n<ul>\n<li>\n    <strong>Erro: \"Cannot connect to the Docker daemon at unix:\/\/\/var\/run\/docker.sock. Is the docker daemon running?\"<\/strong><br \/>\n    <em>Causa:<\/em> O daemon do Docker n\u00e3o est\u00e1 em execu\u00e7\u00e3o, ou o usu\u00e1rio atual n\u00e3o tem permiss\u00e3o para acessar o socket.<br \/>\n    <em>Solu\u00e7\u00e3o 1:<\/em> Verificar se o servi\u00e7o est\u00e1 ativo: <strong>sudo systemctl status docker<\/strong>. Se n\u00e3o estiver, inicie com <strong>sudo systemctl start docker<\/strong> e habilite com <strong>sudo systemctl enable docker<\/strong>.<br \/>\n    <em>Solu\u00e7\u00e3o 2:<\/em> Se o servi\u00e7o est\u00e1 rodando mas o erro persiste, execute <strong>ls -la \/var\/run\/docker.sock<\/strong>. O grupo deve ser <strong>docker<\/strong> com permiss\u00e3o <strong>srw-rw----<\/strong>. Adicione seu usu\u00e1rio ao grupo: <strong>sudo usermod -aG docker $USER<\/strong>, fa\u00e7a logout e login novamente.<br \/>\n    <em>Solu\u00e7\u00e3o 3:<\/em> Em sistemas com SELinux (Rocky\/RHEL), o booleano <strong>container_manage_cgroup<\/strong> pode estar desabilitado. Execute <strong>sudo setsebool -P container_manage_cgroup on<\/strong> e reinicie o Docker.\n  <\/li>\n<li>\n    <strong>Erro: \"Error response from daemon: driver failed programming external connectivity on endpoint ... (iptables failed)\"<\/strong><br \/>\n    <em>Causa:<\/em> Conflito de regras no iptables\/nftables, geralmente ap\u00f3s instala\u00e7\u00e3o de outro firewall ou ap\u00f3s o Docker ter sido reiniciado com regras residuais.<br \/>\n    <em>Solu\u00e7\u00e3o 1:<\/em> Reinicie o Docker, que recriar\u00e1 suas chains: <strong>sudo systemctl restart docker<\/strong>.<br \/>\n    <em>Solu\u00e7\u00e3o 2:<\/em> Se o erro persistir, limpe as chains do Docker manualmente (cuidado: isso afetar\u00e1 containers em execu\u00e7\u00e3o): <strong>sudo iptables -t nat -F DOCKER<\/strong>, <strong>sudo iptables -t filter -F DOCKER<\/strong>, <strong>sudo iptables -t filter -F DOCKER-ISOLATION-STAGE-1<\/strong>, <strong>sudo iptables -t filter -F DOCKER-ISOLATION-STAGE-2<\/strong>, em seguida reinicie o Docker.<br \/>\n    <em>Solu\u00e7\u00e3o 3:<\/em> Em ambientes com firewalld ativo, certifique-se de que o Docker n\u00e3o est\u00e1 bloqueado: <strong>sudo firewall-cmd --add-masquerade --permanent<\/strong> e <strong>sudo firewall-cmd --reload<\/strong>.\n  <\/li>\n<li>\n    <strong>Erro: \"Error: Failed to create network 'lxdbr0': Failed to load kernel module 'bridge'\"<\/strong><br \/>\n    <em>Causa:<\/em> O m\u00f3dulo do kernel <strong>bridge<\/strong> n\u00e3o est\u00e1 carregado. O LXD necessita deste m\u00f3dulo para criar bridges de rede virtuais.<br \/>\n    <em>Solu\u00e7\u00e3o:<\/em> Carregue o m\u00f3dulo manualmente e configure para carregamento autom\u00e1tico: <strong>sudo modprobe bridge<\/strong>, depois execute <strong>echo \"bridge\" | sudo tee \/etc\/modules-load.d\/lxd-bridge.conf<\/strong>. Reinicie o LXD com <strong>sudo systemctl restart snap.lxd.daemon<\/strong>. Verifique com <strong>lsmod | grep bridge<\/strong>.\n  <\/li>\n<li>\n    <strong>Erro: \"LXD doesn't appear to be installed. Please install LXD before running this tool.\"<\/strong><br \/>\n    <em>Causa:<\/em> O snap do LXD foi instalado mas o link simb\u00f3lico para o bin\u00e1rio <strong>lxc<\/strong> n\u00e3o est\u00e1 no PATH, comum no Rocky Linux.<br \/>\n    <em>Solu\u00e7\u00e3o:<\/em> Verifique se o snap est\u00e1 no PATH: <strong>echo $PATH | grep \/snap\/bin<\/strong>. Caso n\u00e3o esteja, adicione ao seu <strong>.bashrc<\/strong>: <strong>export PATH=\"\/snap\/bin:$PATH\"<\/strong>. Recarregue com <strong>source ~\/.bashrc<\/strong>. Verifique com <strong>which lxc<\/strong>, que deve retornar <strong>\/snap\/bin\/lxc<\/strong>.\n  <\/li>\n<li>\n    <strong>Erro: \"Error: Failed to run: \/usr\/bin\/lxc ... setrlimit: RLIMIT_NOFILE: Operation not permitted\"<\/strong><br \/>\n    <em>Causa:<\/em> Limites de arquivos abertos (file descriptors) muito baixos no container LXC n\u00e3o privilegiado, geralmente ao rodar servi\u00e7os como bancos de dados.<br \/>\n    <em>Solu\u00e7\u00e3o 1:<\/em> Aumentar o limite no perfil do container: <strong>lxc config set NOME limits.kernel.nofile 65535<\/strong>, reinicie o container.<br \/>\n    <em>Solu\u00e7\u00e3o 2:<\/em> Se o container for n\u00e3o privilegiado e o erro persistir, ajuste o arquivo <strong>\/etc\/security\/limits.conf<\/strong> no <strong>host<\/strong>: adicione <strong>* soft nofile 65535<\/strong> e <strong>* hard nofile 65535<\/strong>, e reinicie o host. Em ambientes de produ\u00e7\u00e3o na JRT Technology Solutions, padronizamos este ajuste no kickstart\/preseed de todos os servidores.\n  <\/li>\n<\/ul>\n<h3>Boas Pr\u00e1ticas e Dicas Avan\u00e7adas para Containers Linux<\/h3>\n<p>Dominar a cria\u00e7\u00e3o de containers \u00e9 apenas o come\u00e7o. Para operar ambientes containerizados em produ\u00e7\u00e3o \u2014 seja com Docker, LXC ou ambos \u2014 \u00e9 necess\u00e1rio adotar um conjunto de pr\u00e1ticas que elevam a seguran\u00e7a, efici\u00eancia e governan\u00e7a. As recomenda\u00e7\u00f5es a seguir s\u00e3o fruto de anos de experi\u00eancia da JRT Technology Solutions em projetos de grande escala.<\/p>\n<p><strong>1. Minimize o footprint de suas imagens:<\/strong> Ao construir imagens Docker, sempre parta de imagens <strong>alpine<\/strong> ou <strong>distroless<\/strong> quando poss\u00edvel. Imagens baseadas em Debian\/Ubuntu completas podem ter centenas de megabytes com bin\u00e1rios desnecess\u00e1rios, aumentando a superf\u00edcie de ataque e o tempo de pull. Utilize builds multi-stage no Dockerfile: compile em uma imagem pesada (golang, node, maven) e copie apenas o bin\u00e1rio final para uma imagem enxuta. Exemplo de multi-stage para uma aplica\u00e7\u00e3o Go:<\/p>\n<pre><code># Est\u00e1gio 1: compila\u00e7\u00e3o\nFROM golang:1.21-alpine AS builder\nWORKDIR \/app\nCOPY . .\nRUN CGO_ENABLED=0 go build -o \/meu-app\n\n# Est\u00e1gio 2: imagem final (scratch \u00e9 uma imagem vazia)\nFROM scratch\nCOPY --from=builder \/meu-app \/meu-app\nENTRYPOINT [\"\/meu-app\"]\n<\/code><\/pre>\n<p><strong>2. Nunca rode containers como root, a menos que estritamente necess\u00e1rio:<\/strong> Tanto no Docker quanto no LXC, o processo principal do container roda como root por padr\u00e3o <em>dentro do namespace<\/em>. Embora namespaces de usu\u00e1rio mitiguem o risco, a melhor pr\u00e1tica \u00e9 definir a diretiva <strong>USER<\/strong> no Dockerfile para um UID n\u00e3o privilegiado (ex: 1000). No LXC, utilize a op\u00e7\u00e3o <strong>security.privileged: \"false\"<\/strong> (padr\u00e3o no LXD) e mapeie usu\u00e1rios com <strong>lxc config set NOME raw.idmap \"both 1000 1000\"<\/strong>.<\/p>\n<p><strong>3. Implemente health checks:<\/strong> O Docker suporta <strong>HEALTHCHECK<\/strong> via Dockerfile ou flag <strong>--health-cmd<\/strong>. Isso permite que orquestradores (Docker Swarm, Kubernetes) saibam quando um container est\u00e1 realmente saud\u00e1vel, n\u00e3o apenas \"rodando\". Um health check simples para um servidor web:<\/p>\n<pre><code>HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \\\n  CMD curl -f http:\/\/localhost\/health || exit 1\n<\/code><\/pre>\n<p><strong>4. Limpe artefatos regularmente (prune):<\/strong> Containers parados, imagens \u00f3rf\u00e3s, volumes n\u00e3o utilizados e networks abandonadas consomem espa\u00e7o em disco e poluem a listagem. Agende um cron job semanal com <strong>docker system prune -af --volumes<\/strong>. No LXD, use <strong>lxc storage info default<\/strong> para monitorar o uso e remova containers\/snapshots antigos com <strong>lxc delete NOME<\/strong> ou <strong>lxc snapshot delete NOME SNAPSHOT<\/strong>. Em um incidente recente atendido pela JRT Technology Solutions, um servidor de CI\/CD ficou inoperante porque <strong>\/var\/lib\/docker<\/strong> atingiu 100% de uso devido a imagens n\u00e3o limpas.<\/p>\n<p><strong>5. Monitore e logue containers com drivers apropriados:<\/strong> O Docker suporta m\u00faltiplos <strong>logging drivers<\/strong>: json-file (padr\u00e3o), syslog, journald, fluentd, splunk, etc. Configure o driver adequado no arquivo <strong>\/etc\/docker\/daemon.json<\/strong>:<\/p>\n<pre><code>{\n  \"log-driver\": \"journald\",\n  \"log-opts\": {\n    \"tag\": \"docker\/{{.Name}}\"\n  }\n}\n<\/code><\/pre>\n<p>Reinicie o Docker ap\u00f3s a altera\u00e7\u00e3o. Para o LXC, o LXD integra-se naturalmente ao journald do host; acompanhe com <strong>journalctl -u snap.lxd.daemon -f<\/strong>.<\/p>\n<p>A tabela a seguir resume as principais diferen\u00e7as entre Docker e LXC\/LXD, para auxiliar na escolha da ferramenta correta:<\/p>\n<table border=\"1\" cellpadding=\"8\" cellspacing=\"0\" style=\"border-collapse: collapse; width: 100%;\">\n<thead>\n<tr style=\"background-color: #f2f2f2;\">\n<th>Caracter\u00edstica<\/th>\n<th>Docker<\/th>\n<th>LXC\/LXD<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Foco principal<\/strong><\/td>\n<td>Aplica\u00e7\u00f5es (um processo principal)<\/td>\n<td>Sistemas operacionais completos<\/td>\n<\/tr>\n<tr>\n<td><strong>Inicializa\u00e7\u00e3o<\/strong><\/td>\n<td>Processo definido no ENTRYPOINT\/CMD<\/td>\n<td>systemd (ou outro init) inicia m\u00faltiplos servi\u00e7os<\/td>\n<\/tr>\n<tr>\n<td><strong>Camadas de imagem<\/strong><\/td>\n<td>Sim, via UnionFS (Overlay2)<\/td>\n<td>Backends de storage (ZFS, LVM, dir) sem UnionFS<\/td>\n<\/tr>\n<tr>\n<td><strong>Snapshots<\/strong><\/td>\n<td>N\u00e3o nativo (commit gera nova imagem)<\/td>\n<td>Nativo via LXD (lxc snapshot)<\/td>\n<\/tr>\n<tr>\n<td><strong>Rede padr\u00e3o<\/strong><\/td>\n<td>Bridge docker0 (NAT), redes overlay<\/td>\n<td>Bridge lxdbr0 (NAT), suporte a macvlan, SR-IOV<\/td>\n<\/tr>\n<tr>\n<td><strong>Orquestra\u00e7\u00e3o nativa<\/strong><\/td>\n<td>Docker Swarm, integra\u00e7\u00e3o com Kubernetes<\/td>\n<td>LXD Cluster (nativo, com API REST consistente)<\/td>\n<\/tr>\n<tr>\n<td><strong>Isolamento de usu\u00e1rio<\/strong><\/td>\n<td>Namespaces de usu\u00e1rio opcionais<\/td>\n<td>N\u00e3o privilegiado por padr\u00e3o (mapeamento UID\/GID)<\/td>\n<\/tr>\n<tr>\n<td><strong>Persist\u00eancia<\/strong><\/td>\n<td>Volumes, bind mounts<\/td>\n<td>Disks adicionais, pools de storage, bind mounts<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Outra tabela de refer\u00eancia r\u00e1pida para os comandos principais que vimos:<\/p>\n<table border=\"1\" cellpadding<\/table>\n<div style=\"margin:52px 0 40px;padding:36px 28px;background:linear-gradient(135deg,#0f172a 0%,#1a2744 100%);border:2px solid #25D366;border-radius:18px;text-align:center;box-shadow:0 4px 28px rgba(37,211,102,0.18)\">\n<p style=\"margin:0 0 10px;font-size:18px;color:#ffffff;font-weight:700;line-height:1.4\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 28px;font-size:15px;color:#94a3b8;font-weight:400;line-height:1.6\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de Linux para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1!%20Tenho%20interesse%20no%20treinamento%20de%20Linux.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:700;padding:15px 32px;border-radius:100px;text-decoration:none;box-shadow:0 4px 16px rgba(37,211,102,0.45);letter-spacing:0.01em\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!<\/p>\n","protected":false},"author":1,"featured_media":1981,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"iawp_total_views":0,"footnotes":""},"categories":[62],"tags":[3118,3122,3119,3121,3120,1817],"class_list":["post-1982","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-containers-linux","tag-desenvolvimento-em-containers","tag-docker","tag-gerenciamento-de-containers","tag-lxc","tag-virtualizacao"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Thiago Paes Rodrigues\"\/>\n\t<meta name=\"google-site-verification\" content=\"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta property=\"og:description\" content=\"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-02T21:04:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-02T21:04:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61590814880509\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#blogposting\",\"name\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica - BLOG - JRT Technology Solutions\",\"headline\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica\",\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/ai-image-1785704635883.jpg\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica\"},\"datePublished\":\"2026-08-02T18:04:08-03:00\",\"dateModified\":\"2026-08-02T18:04:08-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#webpage\"},\"articleSection\":\"Linux, containers linux, desenvolvimento em containers, docker, gerenciamento de containers, lxc, virtualiza\\u00e7\\u00e3o\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/linux\\\/#listItem\",\"name\":\"Linux\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/linux\\\/#listItem\",\"position\":2,\"name\":\"Linux\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/linux\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#listItem\",\"name\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#listItem\",\"position\":3,\"name\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/linux\\\/#listItem\",\"name\":\"Linux\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"telephone\":\"+552138277513\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-logo-mini.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#organizationLogo\",\"width\":100,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61590814880509\",\"https:\\\/\\\/www.instagram.com\\\/jrtx.tech\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/\",\"name\":\"Thiago Paes Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cdfdf5f766c59d9c9acab959751c31c3442acd94d4b2927c51d2a0c31b50822?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Thiago Paes Rodrigues\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#webpage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/\",\"name\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica - BLOG - JRT Technology Solutions\",\"description\":\"Aprenda na Aula 23 como utilizar Docker e LXC na pr\\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\\u00e7ado!\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/ai-image-1785704635883.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#mainImage\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 23: Containers Linux \\u2014 Docker e LXC na pr\\u00e1tica\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/08\\\/02\\\/aula-23-containers-linux-docker-e-lxc-na-pratica\\\/#mainImage\"},\"datePublished\":\"2026-08-02T18:04:08-03:00\",\"dateModified\":\"2026-08-02T18:04:08-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"alternateName\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions","description":"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!","canonical_url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#blogposting","name":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions","headline":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica","author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/08\/ai-image-1785704635883.jpg","width":1440,"height":1024,"caption":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica"},"datePublished":"2026-08-02T18:04:08-03:00","dateModified":"2026-08-02T18:04:08-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#webpage"},"isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#webpage"},"articleSection":"Linux, containers linux, desenvolvimento em containers, docker, gerenciamento de containers, lxc, virtualiza\u00e7\u00e3o"},{"@type":"BreadcrumbList","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","position":1,"name":"Home","item":"https:\/\/jrtx.com.br\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/linux\/#listItem","name":"Linux"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/linux\/#listItem","position":2,"name":"Linux","item":"https:\/\/jrtx.com.br\/blog\/category\/linux\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#listItem","name":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#listItem","position":3,"name":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica","previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/linux\/#listItem","name":"Linux"}}]},{"@type":"Organization","@id":"https:\/\/jrtx.com.br\/blog\/#organization","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","url":"https:\/\/jrtx.com.br\/blog\/","telephone":"+552138277513","logo":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#organizationLogo","width":100,"height":75},"image":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61590814880509","https:\/\/www.instagram.com\/jrtx.tech\/"]},{"@type":"Person","@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author","url":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/","name":"Thiago Paes Rodrigues","image":{"@type":"ImageObject","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cdfdf5f766c59d9c9acab959751c31c3442acd94d4b2927c51d2a0c31b50822?s=96&d=mm&r=g","width":96,"height":96,"caption":"Thiago Paes Rodrigues"}},{"@type":"WebPage","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#webpage","url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/","name":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions","description":"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#breadcrumblist"},"author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"creator":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/08\/ai-image-1785704635883.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#mainImage","width":1440,"height":1024,"caption":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica"},"primaryImageOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/#mainImage"},"datePublished":"2026-08-02T18:04:08-03:00","dateModified":"2026-08-02T18:04:08-03:00"},{"@type":"WebSite","@id":"https:\/\/jrtx.com.br\/blog\/#website","url":"https:\/\/jrtx.com.br\/blog\/","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","alternateName":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","og:type":"article","og:title":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions","og:description":"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!","og:url":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/","og:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:secure_url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:width":100,"og:image:height":75,"article:published_time":"2026-08-02T21:04:08+00:00","article:modified_time":"2026-08-02T21:04:08+00:00","article:publisher":"https:\/\/www.facebook.com\/profile.php?id=61590814880509","twitter:card":"summary_large_image","twitter:title":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica - BLOG - JRT Technology Solutions","twitter:description":"Aprenda na Aula 23 como utilizar Docker e LXC na pr\u00e1tica. Domine Containers Linux e leve suas habilidades de Linux do zero ao avan\u00e7ado!","twitter:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg"},"aioseo_meta_data":{"post_id":"1982","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-08-02 21:07:06","updated":"2026-08-02 21:07:06"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\/category\/linux\/\" title=\"Linux\">Linux<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jrtx.com.br\/blog"},{"label":"Linux","link":"https:\/\/jrtx.com.br\/blog\/category\/linux\/"},{"label":"Aula 23: Containers Linux \u2014 Docker e LXC na pr\u00e1tica","link":"https:\/\/jrtx.com.br\/blog\/2026\/08\/02\/aula-23-containers-linux-docker-e-lxc-na-pratica\/"}],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/1982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1982"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/1982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/1981"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}