Seguem informações de referência úteis para criar e executar uma imagem docker para um servidor Ubuntu com finalidade de uso no desenvolvimento de software para web.
Primeiro, o básico. Criamos um contêiner a partir de uma imagem. Essa imagem pode ser baixada do Docker Hub.
docker pull ubuntu:bionic
Estou usando a tag bionic para me referir a uma versão específica igual a mesma utilizada no servidor de produção.
Esse comando acima vai baixar a imagem para nossa máquina que já possui o serviço do doker rodando.
Uma vez que a imagem está baixada, vamos criar um contêiner a partir dela e expor as portas que serão utilizadas com o comando abaixo.
docker run --name bionic -p 8089:80 -p 5439:5432 -it -i ubuntu:bionic
Essas portas correspondem aos seguintes serviços respectivamente:
- apache2 web server
- postgresql database server
Esse comando (docker run … -it) vai te enviar para uma sessão dentro do contêiner.
É aconselhável executar uma atualização de pacotes antes de qualquer outro comando.
Volumes
Por padrão um contêiner descarta os dados gravados quando terminado. Para persistir os dados usamos os Volumes.
O comando abaixo cria um volume com o nome de bionic-vol.
docker volume create bionic-vol
Para usar esse volume, montamos o mesmo no comando run do contêiner.
docker run \ --name bionic \ -p 8089:80 -p 5439:5432 \ --mount source=bionic-vol,target=/app \ -it -i ubuntu:bionic
Dessa forma, uma pasta /app poderá ser usada para armazenar de forma persistente qualquer arquivo ou estrutura de pastas (ex: local onde o servidor de banco de dados guarda seus arquivos).
Agora vamos aprimorar esse comando para atender a necessidade de um desenvolvedor web com persistência de dados e apontamento da pasta do projeto no host pelo web server do contêiner.
docker run \ --name bionic \ -p 8089:80 -p 5439:5432 \ -v $HOME/Projetos:/var/www/html \ -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data \ -it -i ubuntu:bionic
Comandos
Comandos para utilizar para manutenção do contêiner:
- docker ps – lista contêineres em execução
- docker attach bionic – conecta o terminal do container
- docker volume ls – lista volumes instalados
Documentação oficial em https://docs.docker.com/.