Mostrando postagens com marcador docker. Mostrar todas as postagens
Mostrando postagens com marcador docker. Mostrar todas as postagens

quarta-feira, 30 de abril de 2025

Instalando o Docker em Linux - 2025

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Guia atualizado para instalar Docker em Linux Ubuntu e CentOS 2025

Instalando o Docker em Linux – Guia Atualizado 2025

O Docker continua sendo uma ferramenta central para ambientes de containers, mesmo em 2025. Apesar da concorrência crescente de alternativas como Podman, o Docker mantém sua força devido à simplicidade e vasta documentação.

Este guia é objetivo: vamos instalar o Docker em sistemas baseados em Debian/Ubuntu e também cobrir a instalação em distribuições RHEL/CentOS/Oracle Linux.

1. Pré-requisitos

  • Distribuição Linux atualizada
  • Acesso root ou sudo
  • Conexão com a internet

2. Instalando Docker em Debian/Ubuntu

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Após a instalação, verifique o serviço:

sudo systemctl status docker

3. Instalando Docker em RHEL/CentOS/Oracle Linux

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

Confirme a instalação com:

docker --version

4. Pós-instalação (Opcional)

Para evitar usar sudo em cada comando Docker:

sudo usermod -aG docker $USER
newgrp docker

Agora você pode rodar comandos Docker diretamente sem precisar de sudo.

5. Considerações Finais

O Docker evoluiu, mas a base da instalação continua muito similar. Manter o ambiente atualizado e seguro é crucial para projetos sérios de infraestrutura.

Nos próximos artigos, vamos aprofundar o uso de Dockerfiles, Volumes, Redes e práticas seguras em ambientes de containers.

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

terça-feira, 29 de abril de 2025

Waiting for confirmation of MySQL service startup...

Docker travado em “Waiting for confirmation of MySQL service startup”

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Docker travado em “Waiting for confirmation of MySQL service startup”

Esse erro, apesar de simples à primeira vista, é um dos travamentos mais silenciosos e frustrantes ao tentar migrar containers MySQL. Logo após o primeiro docker run, o container trava antes mesmo de subir:

Waiting for confirmation of MySQL service startup

Esse tipo de erro normalmente indica que algo no volume de dados está impedindo a inicialização do banco, e o entrypoint padrão do container está preso esperando algo que não virá.

🔍 Possíveis causas

  • Volume com dados parcialmente migrados ou corrompidos
  • Permissões erradas nos arquivos do MySQL
  • Arquivos de instalação (como ibdata1, auto.cnf) presentes mas inválidos
  • Configuração personalizada my.cnf quebrada ou incompatível

🛠️ Como resolver

1️⃣ Testar sem volume

Rode o container limpo, sem montar volume. Se funcionar, o problema está nos dados:

docker run -e MYSQL_ROOT_PASSWORD=test --rm mysql:5.7

2️⃣ Verificar estrutura do volume

Confira se o volume está realmente com os arquivos corretos do MySQL:

ls -la /var/lib/mysql

Se necessário, corrija permissões:

chown -R mysql:mysql /var/lib/mysql

3️⃣ Apagar arquivos de PID ou socket

Se você migrou arquivos com o banco ligado, talvez arquivos "fantasmas" estejam bloqueando o start:

rm -f /var/run/mysqld/mysqld.pid
rm -f /var/run/mysqld/mysqld.sock

4️⃣ Ver logs detalhados

Use essas variáveis para visualizar o que está acontecendo:

-e MYSQL_LOG_CONSOLE=true
--log-error-verbosity=3

5️⃣ Teste interativo

Entre no container antes do daemon tentar iniciar:

docker run -it --rm -e MYSQL_ROOT_PASSWORD=test mysql:5.7 bash
mysqld --initialize --user=mysql
mysqld
  

Isso revelará erros internos antes que o script padrão tente inicializar o banco e trave.

"Nem sempre o MySQL trava por estar corrompido. Às vezes ele só está perdido em um novo lugar, tentando achar o caminho de casa."

Ao migrar um container MySQL, certifique-se de que os dados estão íntegros, as permissões corretas e o ambiente limpo. Um banco de dados exige cuidado — mesmo em um mundo de containers descartáveis.

segunda-feira, 28 de abril de 2025

Migrando Containers

Como Migrar um Container Docker para Outro Servidor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como Migrar um Container Docker para Outro Servidor

Saiba como transportar containers e volumes com segurança entre máquinas diferentes usando comandos simples.

📦 Método 1: Exportar container e volumes manualmente

1. Crie a imagem a partir do container

docker commit meu_container minha_imagem:latest

2. Exporte a imagem para um arquivo

docker save minha_imagem:latest -o minha_imagem.tar

3. Exporte dados do volume (se aplicável)

tar czf meus_dados.tar.gz /caminho/do/volume

4. Transfira para o novo servidor

scp minha_imagem.tar meus_dados.tar.gz usuario@servidor:/caminho/destino

5. Importe a imagem e os dados no novo host

docker load -i minha_imagem.tar
tar xzf meus_dados.tar.gz -C /caminho/destino

6. Suba novamente o container

docker run -d -v /caminho/destino:/dados minha_imagem

🧩 Método 2: Usando Docker Compose (ideal para múltiplos serviços)

1. Copie o arquivo docker-compose.yml e os volumes

Garanta que os dados estejam compactados ou montados via diretórios locais.

2. No novo servidor, execute:

docker-compose up -d

Essa abordagem é mais prática para aplicações complexas ou multi-containers.

"Containers são passageiros, mas dados são valiosos. Cuide da migração de ambos."

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

quinta-feira, 24 de abril de 2025

É possível desativar o auditd via GRUB no Oracle Linux 8?

Desativando auditd via GRUB no Oracle Linux 8

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como desativar o auditd via GRUB no Oracle Linux 8

GRUB com audit=0 configurado

O serviço auditd é usado para auditoria de eventos no Linux. Em alguns sistemas, especialmente quando há problemas de performance ou erros como “auditd: backlog limit exceeded”, pode ser necessário desativá-lo.

⚙️ Desativando via GRUB (temporário ou persistente)

Você pode desativar o auditd adicionando o parâmetro audit=0 na linha do kernel.

🔧 Passo a passo:

  1. Reinicie o sistema
  2. Na tela do GRUB, pressione e para editar a entrada do kernel
  3. Localize a linha que começa com linux ou linuxefi
  4. Adicione ao final: audit=0
  5. Pressione Ctrl + X ou F10 para bootar

💾 Para tornar permanente:

Edite o arquivo de configuração do GRUB:

sudo nano /etc/default/grub

Adicione o parâmetro em:

GRUB_CMDLINE_LINUX="... audit=0"

Salve e atualize o GRUB:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

⚠️ Atenção

  • Desabilitar o auditd pode impactar logs de segurança
  • Evite em ambientes que exigem compliance (PCI, HIPAA, etc.)
  • Para desabilitar o serviço por completo:
    sudo systemctl disable auditd
    sudo systemctl mask auditd

“Nem toda segurança vem sem custo — e nem todo sistema aguenta auditoria sem limites.”

quarta-feira, 23 de abril de 2025

Como verificar a limitação de threads em um container Docker quando não existe a pasta /sys/fs/cgroup/docker (ou cgroups padrão)

Verificando limite de threads em container Docker

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como verificar limitação de threads em container Docker

Verificando limites com cat /proc/self/limits no Docker

Se você está tentando identificar quantas threads ou processos um container pode criar, mas não encontrou a pasta /sys/fs/cgroup/docker, saiba que é possível obter essa informação por outros meios.

🔧 Por que a pasta pode não existir?

  • O sistema está usando cgroups v2, que tem um layout diferente
  • O container está em um ambiente minimalista, sem montar o cgroup completo
  • O Docker foi configurado com outro caminho de cgroup

✅ Método alternativo: /proc/self/limits

Dentro do container, execute:

cat /proc/self/limits

Procure pela linha:

Max processes    4096    4096    processes

Esse número indica quantos processos (e portanto, threads) você pode criar dentro do container.

📦 Usando docker inspect

Do host, verifique o container:

docker inspect --format='{{.HostConfig.PidsLimit}}' nome_ou_id

Se estiver em branco, o limite está herdando do sistema (normalmente ilimitado).

🧠 Dica avançada (cgroup v2)

Se estiver usando cgroups v2, verifique o caminho:

cat /sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/pids.max

Ou use:

systemd-cgls
systemctl status docker

“Nem toda limitação está visível — mas os processos sempre revelam suas fronteiras.”

terça-feira, 22 de abril de 2025

Docker error: “Cannot initialize async manager: cannot create thread – operation not permitted”

Erro Docker no CentOS: cannot create thread

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Erro Docker no CentOS: cannot create thread – operation not permitted

Erro Docker no terminal CentOS

Se ao tentar iniciar um container no Docker você se deparou com a mensagem:

Cannot initialize async manager: cannot create thread – operation not permitted

Esse erro geralmente está relacionado a limites de sistema (ulimit) ou restrições de segurança no CentOS ou Red Hat-based systems.

🔍 Possíveis causas

  • Limite de threads (max user processes) está muito baixo
  • Docker sendo executado em um ambiente restrito (como contêiner ou com SELinux/apparmor ativo)
  • Container tentando criar mais threads do que o sistema permite

✅ Como resolver

1. Aumentar o limite de threads (ulimit)

ulimit -u 65535

Ou edite o arquivo /etc/security/limits.conf:

* soft nproc 65535
* hard nproc 65535

2. Ajustar systemd

Se o Docker for iniciado via systemd:

sudo systemctl edit docker

Adicione:

[Service]
LimitNPROC=infinity

Depois reinicie o serviço:

sudo systemctl daemon-reexec
sudo systemctl restart docker

3. SELinux (se ativado)

Para testar, você pode temporariamente desabilitar:

sudo setenforce 0

(⚠️ use com cautela — preferencialmente ajuste permissões via audit2allow)


“Limitações silenciosas do sistema podem se tornar barreiras para contêineres. Saber onde mexer é a chave.”

quarta-feira, 9 de abril de 2025

Usando Podman + Podman Compose com Imagens do Harbor

Podman + Podman Compose com Harbor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Usando Podman e Podman Compose com Imagens do Harbor: Configurações, Alternativas e Boas Práticas

Introdução

Em ambientes modernos de DevOps e infraestrutura como código, o uso de containers é central para isolar serviços, distribuir aplicações e garantir portabilidade. Enquanto o Docker é amplamente conhecido, o Podman tem se consolidado como uma alternativa sólida e mais segura. Ele elimina o daemon, permite execução rootless e segue o padrão OCI.

Neste artigo, vamos integrar o Harbor (registry privado de containers) com o Podman, abordando duas abordagens distintas:

  • Uso direto com o Podman
  • Gerenciamento orquestrado com o Podman Compose

Além disso, vamos configurar corretamente o uso de registries privados (com ou sem TLS), ajustar permissões, discutir boas práticas e entender quando usar cada modelo.

1. Instalando o Podman

RHEL / Oracle Linux / CentOS

sudo dnf install -y podman

Ubuntu / Debian

sudo apt update
sudo apt install -y podman

Verifique a instalação:

podman --version

2. Configurando acesso ao Harbor

Faça login (se necessário):

podman login harbor.seuservidor.com

2.1 Usando registries sem HTTPS (HTTP)

sudo mkdir -p /etc/containers/registries.conf.d
sudo nano /etc/containers/registries.conf.d/harbor.conf

Adicione:

[[registry]]
prefix = "harbor.seuservidor.com"
location = "harbor.seuservidor.com"
insecure = true

3. Puxando e rodando imagens do Harbor com Podman

podman pull harbor.seuservidor.com/devops/nginx-custom:1.0
podman run -d --name webapp \
  -p 8080:80 \
  harbor.seuservidor.com/devops/nginx-custom:1.0
  • -d: executa o container em segundo plano (detached mode)
  • --name: define um nome identificável para o container
  • -p 8080:80: expõe a porta 80 do container na porta 8080 do host

Verificando a execução

podman ps

Isso mostrará todos os containers em execução, com ID, nome e portas mapeadas.

Acessando o serviço

Se o container oferece uma API ou serviço web, você pode testá-lo com:

curl http://localhost:8080

Ou acessando diretamente pelo navegador: http://localhost:8080

4. Alternativa: Usando Podman Compose

Para projetos com múltiplos serviços:

4.1 Instalação

pip install podman-compose
python3 -m venv venv
source venv/bin/activate
pip install podman-compose

5. Estrutura de Projeto

meu-app/
├── docker-compose.yml
└── .env (opcional)

Exemplo de docker-compose.yml

version: "3"
services:
  web:
    image: harbor.seuservidor.com/devops/nginx-custom:1.0
    ports:
      - "8080:80"
    restart: always

6. Subindo os serviços

podman-compose up -d
podman-compose logs
podman ps
podman-compose down

7. Comparativo: Podman direto vs Podman Compose

Critério Podman (direto) Podman Compose
Complexidade Baixa Média
Multi-serviços Manual Gerenciado via YAML
Escalabilidade Limitada Modular
Controle de rede Simples Mais granular
Ideal para Containers isolados Projetos multi-serviço

8. Boas práticas

  • Armazene as credenciais com segurança.
  • Evite usar a tag latest em produção.
  • Use versões fixas para garantir reprodutibilidade.
  • Crie redes próprias para isolar serviços:
podman network create meu_rede

Conclusão

Integrar o Harbor com Podman (com ou sem Compose) permite controle total sobre suas imagens, com mais segurança e independência do Docker daemon. O Podman direto é ideal para containers rápidos e isolados, enquanto o Compose se destaca em ambientes mais complexos.

Nos próximos capítulos, vamos explorar volumes persistentes, redes customizadas e estratégias de deploy em produção.

SysadminUrbano • Guia Técnico: Migração Windows 10 -> Windows 11 com Backup Completo

Migração Windows 10 → Windows 11: Backup completo e restauração sem perdas Checklist técnico com comandos, exportações e reaproveit...