Conhecendo o Docker

O Docker está sendo bem comentado e utilizado ultimamente, por isso, achei interessante o assunto e gostaria de falar um pouco sobre isso aqui no Blog.  🙂

docker-image

Docker é um projeto opensource escrito em Go, que torna a criação e gerenciamento de containers Linux muito mais fácil.O container é construído usando namepspaces, cgroups, chroot entre outras funcionalidades do kernel para construir uma área isolada para sua aplicação, ele é executado como um processo isolado no sistema operacional hospedeiro, compartilhando o kernel com outros recipientes, ou seja, permitem códigos e aplicações rodarem separados de outros containers compartilhando os mesmos recursos de hardware.

Ajuda administradores implantar e executar qualquer aplicativo em qualquer infra-estrutura de forma rápida e confiável.

Mão na massa!  🙂

Instalando o Docker no CentOS-7
#yum install docker

Obs: CentOS-7 apresentou o firewalld, e pode entrar em conflito com Docker.

Caso estiver usando Ubuntu, o nome do pacote é docker.io
#apt-get install docker.io

Mas vamos continuar no CentOS
Iniciando o daemon
#service docker start

Para iniciar automaticamente no boot
#chkconfig docker on

Vamos rodar o comando sem argumentos,  apenas para ver as opções disponíveis:
#docker

Exemplos: 
commit – images – kill – pause – port – ps – restart – rmi – rm – run – start – stop  
e outros

Vamos precisar receber as últimas imagens do CentOS.
#docker pull centos

Listando as Imagens
#docker images

Executando um container e abrindo o shell
#docker run -i -t centos /bin/bash 

Obs:
-i para permitir nossa interação com o container e -t chamar a tty. Após apertar enter, o Docker procurou por imagem do centOS no cache local.

Pronto, você já está usando seu container rodando a imagem do centOS. Note que seu prompt mudou, exemplo:
root@ac6b20131fc0:/#

O ac6b20131fc0, é o ID do container. Sendo assim, significa que estamos dentro do container rodando CentOS. Ainda dentro do container vamos rodar o comando ps para ver o que temos em execução:

root@ac6b20131fc0:/# ps
Não existem outros processos do sistema operacional em execução, apenas o bash e o ps.

Não user exit para sair, o exit sai do container deixando ele em stop, use o ctrl+p+q.

Listando o container em execução
# docker ps

CONTAINER ID     IMAGE             COMMAND  CREATED STATUS                  PORTS       NAMES
ac6b20131fc0  centos:centos7   “/bin/bash”   7 minutes ago Up 6 minutes              furious_kaur

Após fazer alguma atualização/instalação no container, crie uma nova imagem apartir da mudança feita.

#docker commit ac6b20131fc0 rivendel/teste:0.1
# docker images

Faça o teste!
Quando estiver utilizando seu container,execute dentro dele o comando top ou htop.
Como falei no início o Docker é rápido e fácil de utilizar, ele é leve e usa poucos recursos do
hardware.
Com a lista de opções que o comando docker retorna, veja como parar ou remover o container.
Falando um pouco sobre Dockerfile

O Docker pode construir imagens automaticamente através da leitura das instruções de um Dockerfile.
Dockerfiles contêm instruções, orientações e comandos que devem ser executados para construir imagens automaticamente, a fim de automatizar o processo de construção.

Usando o Dockerfile para instalar o Nginx (Servidor proxy HTTP e reverso)

Criando o arquivo Dockerfile para instalar o nginx.
#vim /opt/nginx/Dockerfile

FROM rivendel/teste:0.1
## Comando para instalar o nginx.
RUN yum update && yum install nginx -y

## Define working directory.
WORKDIR /etc/nginx

## Define default command.
CMD [“nginx”]

## Expose ports.
EXPOSE 80

## Fim do arquivo.
Pronto, salve o arquivo.

Agora já podemos usar o Dockerfile para gerar uma imagem.
#docker build -t teste-nginx
Successfully built 46e40db85262

Verificando a imagem gerada
#docker images
teste-nginx latest 46e40db85262 27 seconds ago 299.8 MB

O comando seguinte faz um forwarding da porta 80 local para a porta da imagem criada.
#docker run -p 80:80 -d teste-nginx

Verifique se o nginx está funcionando.
#curl -I localhost

Pronto!
Nosso Nginx e o Dockerfile estão funcionando 🙂

Site oficial do Docker
www.docker.com

21