Anotações - Aprendendo Docker
O objetivo é compartilhar o meu aprendizado do uso do Docker.
Para ajudar outros e para servir de fácil consulta para mim resolvi fazer algumas anotações das buscas que faço sobre docker. Não tem muita revisão e também pode haver alguns erros, se você observar algum me avise. É um texto de aprendiz, não de especialista.:)
Essas notas serão quebradas em outras partes, mas sempre com um objetivo em mente definido como um PROJETO
PROJETO - Ter uma imagem do Wordpress usando Docker.
O QUE É - Docker roda aplicações isoladas no mesmo servidor. Usa diversas técnicas de virtualização.
DOCKER IMAGES
Cada Docker Container é uma instancia de um Docker Image. Uma image é uma instalação minima do Linux, com o necessário para rodar a aplicação. Isso permite rodar uma outra distro dentro de um Ubuntu.
Docker images podem ser compartilhadas através do Docker Hub que é mantido pelo time de Docker.
COMUNICAÇÃO ENTRE DOCKER IMAGES
Docker images são isoladas da máquina local por padrão e a comunicação ocorrer através de três formas:
- Variáveis de ambientes
A aplicação roda dentro da image checa essas variavies de tempos em tempos.
- Docker data volume
Esta forma pode acontecer de duas formas, internamente ou compartilhada. Internamente o dado persiste mesmo quando o container especificado for apagado. Um data volume compartilhado, transforma uma pasta interna da image em uma pasta compartilhada com a máquina local, facilitando o compartilhamento de arquivos entre ambos.
- Via rede
Essa maneira permite criar links entre images usando as respectivas portas, exemplo você pode ter uma image usando um banco de dados e acessar essa image através de outra image usando o encaminhamento das portas.
Os conceitos de Docker Images e comunicação de entre Images, ajuda a entender a função do docker compose, já que ele facilita na administração de múltiplos containers.
INSTALAÇÃO
-
DOCKER
A forma mais simples para fazer a instalação do Docker é usar o script criado pelo time do Docker. Basta usar o seguinte comando no terminal.
$ wget -qO- https://get.docker.com/ | sh
Será solicitado senha durante a instalação. -
DOCKER COMPOSE
Será necessário ter opython-py
rodando para instalar o Docker Compose
$ sudo apt-get -y install python-pip
$ sudo pip install docker-compose
- RODANDO UM CONTAINER COM DOCKER COMPOSE
Primeiro precisamos ter um arquivo com a extensão .yml, você pode criar esse arquivo em qualquer pasta que espera ter a sua aplicação.
No arquivo de .yml cria o nome da image na primeira linha e na segunda linha especifica em que image ela é baseada.
# docker-compose.yml
primeira-image:
image: hello-world
Agora basta rodar com o comando
$ docker-compose up
- COMANDOS DO DOCKER COMPOSE E OUTROS
Usando a opção -d
a roda em background e a opção ps
mostra os processos, no campo state mostra se o está rodando quando mostra up
e exit
para quando houver saída do processo.
O comando rm
ajuda a começar um container sem informações antigas.
Quando se usa uma image que tem a execução é persistente podemos usar o comando docker exe
para acessar o terminal do container.
Para isso basta usar da seguinte maneira
$ docker exec -it [imageId] /bin/bash
Usar só o wordpress isolado na nossa image causa erros, por isso vamos colocar no nosso arquivo .yml o link para outra imagem que também será declarado no mesmo arquivo.
image: wordpress
links:
- wordpress_db:mysql
wordpress_db
image: mariadb
Dentro na image wordpress temos o links que referencia para a imagem do wordpress_db e usamos a image do mariadb para a base de dados.
Dentro do wordpress_db precisamos das variáveis de ambiente com a senha e para isso vamos usar a key enviroments.
Na key enviroments você pode precisa declarar uma senha usando a key MYSQL_ROOT_PASSWORD.
E dentro da image wordpress podemos ter a key ports para linkar a porta do host com a porta do container.
Neste momento o docker-compose.yml deve estar assim
# d
mirame-image:
image: wordpress
links:
- wordpress_db:mysql
ports:
- 8080:80
wordpress_db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: suasenha
FONTES USADAS
Documentação do Docker
Como instalar e usar o docker compose no Ubuntu 14.04 (EN)
How To Work with Docker Data Volumes on Ubuntu 14.04