Um Dockerfile é um arquivo de texto simples que contém uma lista de comandos que o cliente do Docker chama durante a criação de uma imagem. É uma maneira simples de automatizar o processo de criação de imagens. Em essência, é uma lista de comandos que o mecanismo do Docker executa para montar a imagem e, assim, instâncias de imagens como contêineres.
A melhor parte é que os comandos que você escreve em um Dockerfile são quase idênticos aos seus comandos equivalentes no Linux. Isso significa que você não precisa aprender a nova sintaxe para criar seus próprios dockerfiles.
Nesse tutorial iremos realizar a instalação do Alpine pela forma automatica via DockerHub e depois com uma imagem Dockerfile. O Alpine Linux é uma distro GNU/Linux construída em torno das bibliotecas musl, libc e do Busybox.Estas características permitem que seja bastante pequena e muito eficiente em termos de uso de recursos do sistema. Para rodar no Docker, o contêiner não requer mais do que 8 MB.
Obtendo imagens Via Dockerhub
Agora iremos baixar e usar uma imagem do Alpine Linux, não iremos precisar de um Dockerfile, porquê!? Quando uma imagem não é encontrada localmente, ela é baixada automaticamente, pelo Docker Hub. Então ao executarmos o comando abaixo ele dará um pull direto do dockerhub, nos trazendo a imagem do Alpine pronta, veja só:
|
|
Após isso, veja o resultado abaixo:
|
|
Repare agora que se você executar o comando “docker ps
” em seu terminal neste momento, já é possível ver a imagem na relação de disponíveis localmente:
|
|
Agora o próximo passo é rodar a imagem, use o comando run. Como o Alpine é baseado no Busybox (software que fornece várias ferramentas Unix), é fácil iniciar esta imagem executando o comando:
|
|
Dá para fazer mais do que isto. Nos exemplos abaixo, determinamos a versão do Alpine em uso no contêiner:
|
|
Quando uma imagem não é encontrada localmente, ela é baixada automaticamente, pelo Docker. Se você quiser rodar uma shell dentro do contêiner Alpine, use o ash (semelhante ao Bash):
|
|
Importante: Você pode buscar e baixar imagens públicas do Docker Hub livremente. Contudo, para enviar e armazenar suas imagens no hub é necessário ter uma conta cadastrada.
Detalhando um Dockerfile
Se você baixou um dockerfile via GitHub ou até mesmo pelo DockerHub, inicialmente é preciso entender a composição do arquivo listada abaixo:
|
|
Buildando uma imagem depois de ter baixado o Dockerfile:
|
|
|
|
Depois verifique se a imagem está ok através do comando “docker images”. Se estiver tudo ok, agora vamos rodar sua aplicação com o comando:
|
|
Lembrando que se você adiciou tag a sua imagem, ao rodar o comando docker run, você deve especificar o nome e a tag da imagem. Para acessar sua imagem, basta rodar o comando “docker attach nome da imagem”.
Para obter um Shell (Bash) em um container que já esteja rodando, execute isso:
|
|
NOTA: quando saímos do nosso container com o comando “exit”, ele mata o nosso processo. Para darmos um dettach, ou em outras palavras, sair sem fecharmos ele, precisamos dos comandos: Ctrl+p + Ctrl+q. Para subirmos ele novamente, basta utilizar o comando start.
Docker Compose
O Docker Compose é uma ferramenta usada para definir e gerenciar aplicativos multi-container do Docker. Ele permite que você defina todo o ambiente de um aplicativo em um arquivo YAML, chamado de arquivo docker-compose.yml. Com esse arquivo, você pode especificar todos os serviços, redes e volumes necessários para executar e interligar diferentes contêineres como um único aplicativo.
O Docker Compose é útil principalmente para cenários em que você tem uma aplicação que requer vários serviços diferentes (como bancos de dados, servidores web, caches, etc.) e deseja orquestrá-los facilmente.
Aqui está uma explicação básica de como usar o Docker Compose:
Instalação:
Antes de começar, verifique se você tem o Docker Compose instalado em sua máquina. Se ainda não o tiver, você pode encontrar as instruções de instalação na documentação oficial do Docker.
Crie o arquivo docker-compose.yml: Crie um arquivo chamado docker-compose.yml na raiz do seu projeto ou diretório de trabalho. Este arquivo será onde você definirá a configuração do seu aplicativo.
Defina serviços:
No arquivo docker-compose.yml, você deve definir os serviços que compõem seu aplicativo. Cada serviço representa um contêiner separado. Para cada serviço, você especifica a imagem Docker que será usada, portas expostas, volumes compartilhados, variáveis de ambiente e outras configurações relevantes.
Defina redes e volumes (opcional):
Além dos serviços, você pode definir redes personalizadas e volumes compartilhados que os serviços usarão para se comunicar e armazenar dados.
Execute o aplicativo:
Após definir o arquivo docker-compose.yml, vá para o diretório onde ele está localizado e execute o seguinte comando para iniciar o aplicativo:
|
|
Isso fará com que o Docker Compose inicie todos os contêineres especificados no arquivo docker-compose.yml.
Gerencie o aplicativo:
Uma vez que o aplicativo esteja em execução, você pode usar comandos como docker-compose stop, docker-compose start, docker-compose restart, docker-compose down, entre outros, para gerenciar os contêineres.
É importante mencionar que o Docker Compose facilita a orquestração de contêineres e a configuração de um ambiente de desenvolvimento consistente. Ele não é recomendado para ambientes de produção de alto nível, onde soluções mais avançadas de orquestração, como Kubernetes, são mais apropriadas.
O Docker Compose é uma ferramenta poderosa e valiosa, especialmente para desenvolvedores e equipes que desejam simplificar o gerenciamento de aplicativos baseados em contêineres e evitar a complexidade de configurar manualmente vários contêineres separados.
Referências utilizadas nesse guia:
https://docs.docker.com/docker-hub/overview/. http://www.alpinelinux.org/about/. https://www.mundodocker.com.br/o-que-e-dockerfile/