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 Mandic. 🙂
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 infraestrutura de forma rápida e confiável.
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
Observações:
-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
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.
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
Nosso Nginx e o Dockerfile estão funcionando 🙂
Site oficial do Docker: www.docker.com
Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.