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 o python-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