07 de janeiro de 2022 • 3 min de leitura
Criando um servidor Ubuntu no Docker
Como criar um Ubuntu Server para testes rápidos pelo Docker e algumas dicas de configuração
Introdução
Queria testar alguns processos de instalação e configuração para o Ubuntu Server, mas não queria ter que criar uma máquina virtual nova, só queria ver se realmente não tinha nenhum detalhe que eu tinha esquecido, e pensei logo no docker, que poderia criar pra mim um container do Ubuntu bem rápido e fácil. É um post bem simples, mas que mostra alguns conceitos e detalhes da linha de comando do Docker que vale a pena saber.
Imagem do Ubuntu
No Docker Hub você encontra todas as imagens disponíveis para o Docker, e consequentemente a imagem oficial do Ubuntu:
Ubuntu - Official Image | Docker Hub
Existem algumas “tags” que são colocadas na linha de comando na criação do container, para sinalizar qual o tipo do ubuntu que você quer criar. A tag pode ser a própria versão “18.04”, ou o nome da versão: “bionic”. A tag padrão é a “latest”, que baixa a última versão LTS do ubuntu.
Como no meu caso, eu gostaria de usar a linha de comando para testar as primeiras configurações, eu descobri que também preciso usar uma opção chamada de pseudo-TTY (-it), que cria um terminal interativo para você executar os comandos pelo bash (o shell do Ubuntu).
E por fim usei a opção “—name” para nomear o container. Ficando da seguinte forma:
docker run --name ubuntu -it ubuntu
E depois, para acessar o root, usamos:
docker exec -it ubuntu bash
Dicas
Expondo portas
Se você deseja acessar esse container para fazer determinados testes, é aconselhável expor uma porta na criação do container, porque se não, você irá ter que criar outro container só para conseguir expor essa porta, mas se você já criou o seu container sem fazer isso, você pode comitar o container atual, criando uma nova imagem, e recriar o container utilizando essa mesma imagem, isso vai te poupar um pouco de trabalho.
Para expor uma porta, basta apenas utilizar a opção “-p”, seguido da porta que vai ser usada pelo host, e depois a porta que será usada pelo container:
docker run --name ubuntu -p 3333:3333 -it ubuntu
Neste caso, toda vez que você fizer uma requisição para a porta 3333 na sua máquina, vai ser redirecionado para a porta 3333 do seu container.
Docs: Container networking | Docker Documentation
Problemas de conexão
Mesmo expondo a porta do seu container, pode ser que você enfrente algumas dores de cabeça com a conexão, eu mesmo tive alguns problemas, mas o mais complicado e que eu demorei para resolver, foi o de eu expor uma porta do container, colocar uma aplicação para rodar, e mesmo assim, quando eu tentava acessar o container, dava um erro de resposta como “ERR_EMPTY_RESPONSE”, ou “Empty reply from server”.
Esse erro especificamente, ocorre devido ao hostname configurado na sua aplicação, no meu caso, estava utilizando e definindo “localhost” como hostname, e só funcionou quando eu alterei para “0.0.0.0”.
Link que me ajudou a resolver: node.js - Docker: Empty response from server - Stack Overflow
Flags úteis
Algumas vezes, mesmo você logando no shell pelo usuário root, alguns comandos podem acusar que não tem permissão para serem executados por que o usuário não é o root(mesmo você sendo o root rs), nesse caso você pode usar uma a opção “—privileged”, que estende alguns privilégios ao acesso, e evita esses erros.
docker exec -it --privileged ubuntu bash
Concluindo
Este foi um post rápido e simples, mas que eu estarei atualizando conforme eu for me deparando com problemas que venham a surgir, se você tem alguma dúvida ou sugestão, não deixe de comentar aqui em baixo, até a próxima.😉
Buy Me a Coffee
As a good programmer, I know you love a little coffee! So why don't you help me have a coffee while I produce this content for the whole community?💙
With just $3.00, you can help me, and more importantly, continue to encourage me to bring more completely free content to the whole community. You just need to click on the link below, I'm counting on your contribution 😉.
Buy Me a CoffeeSubscribe to our Newsletter!
By subscribing to our newsletter, you will be notified every time a new post appears. Don't miss this opportunity and stay up-to-date with all the news!
Subscribe!