Saturday, January 23, 2016

Tutorial Docker - 3/3

Terceiro e último post sobre comandos e utilização de Docker.
Link para o Parte 1 e Parte 2

Comandos


Executar um comando
O comando será executado sem efetivamente entrar no container

$ docker exec <ID_CONTAINER> ps -ef

Execução de comando com interface interativa

$ docker exec -ti 2e98aab60f7c /bin/bash


Inspecionar o container

$ docker inspect <ID_CONTAINER>


Informações do container
Verificar o quanto o container esta utilizando de processador, memória e rede

$ docker stats <ID_CONTAINER>


Link entre container
Criar um container com um nome e ligação de rede com outro container. Dessa forma o novo container irá localizar o outro passado pelo link através do seu nome.

$ docker run -ti --name node1 --link <NAME OR ID>:ALIAS ubuntu:14.10

ou

$ docker run -ti --name node1 --link <NAME OR ID> ubuntu:14.10

Exemplo:

$ docker run -d --name node1 ubuntu:14.10 mysql

$ docker run -ti --name node2 --link node2 ubuntu:14.10 bash


Controle de uso do Hardware


CPU
O parâmetro -c quantidade de processamento que o container irá utilizar.

Em testes realizados foi possível constatar que esse valor não limita o uso do processador mas sim a sua prioridade de utilização. Sendo assim o container utiliza o máximo do processador disponível e o escalona quando necessário.

$ docker run -c 10 -it ubuntu /bin/bash

Memória
Utilizando o parâmetro -m seguido da quantidade <NUMERO><UNIDADE>.

As unidades podem ser b,k,m ou g == byte, kilobyte, megabyte e gigabyte

$ docker run -m 1024m -dit ubuntu /bin/bash


Volumes
Utilizar/Compartilhando o diretório de outro container ou do próprio host.

Nesse processo os arquivos contidos no host irão ser compartilhados com o container. O valor passado é o path do arquivo/diretório do host e o path do container separados por :. Exemplo -v path_host:path_container

$ docker run -v /etc/folder:/etc/folder --name data_only ubuntu

Compartilhando mais de um arquivo/diretório.

$ docker run -v /etc/folder:/etc/folder -v /home/user:/root --name data_only ubuntu

Também é possível compartilhar os arquivos existentes em outros container com --volume-from.

$ docker run -ti --volumes-from data_only ubuntu bash


Copiar Arquivos

$ docker cp arquivos_host ID_CONTAINER:path_container

Remove
Remover todos os containers em stand-by ou finalizados no computador.

$ docker rm $(docker ps -aq)

Tuesday, January 19, 2016

Tutorial Docker - 2/3

Segundo Post de uma sequência de três, sobre comandos e utilização de Docker.
Link para o Primeiro Post

Comandos

Listar os dockers ativos

$ docker ps

Nessa tela conterá:

  • ID
  • Nome da Imagem
  • Comando que esta sendo executado
  • Quando foi criado
  • Status
  • Portas utilizadas
  • Nome do container

Com o parâmetro -a são listados todos os dockers criados que não foram removidos, até os que não estão ativos.

$ docker ps -a

Para listar somente os ids dos containers é utilizado o parâmetro -q

$ docker ps -q


Remover o docker

Caso o mesmo esteja em execução essa operação não será permitida e para forçar essa ação utiliza a opção -f

$ docker rm <ID_CONTAINER>
$ docker rm -f <ID_CONTAINER>


Acessar container já iniciado

$ docker attach <ID_CONTAINER>


Controle de portas

Para fazer redirecionamento de portas com container é utilizado o parâmetro -p seguido da porta do host e a porta da aplicação no container, separados por :.

No caso passado abaixo ao acessar a porta 8080 do host, a requisição será redirecionada para a porta 80 do container.

$ docker -p 8080:80 nginx


Criar imagem da aplicação iniciada

Através do comando commit é gerado uma imagem do container com todas as suas configurações

$ docker commit <ID_CONTAINER <NOME>:<VERSAO>
$ docker commit abe7ed70214c simbiose/acme:1.0


Listar Imagens

Existentes na base local.

$ docker images


Remover imagens

Essa operação não será permitida caso algum container em execução esteja utilizando a imagem desejada

$ docker rmi <IMAGE_ID>

Tutorial Docker - 1/3

Um simples tutorial, dividido em três partes, explicando a utilização de alguns parâmetros do Docker.

Existe um repositório para imagens para o docker chamado de DockerHub. Nele é armazenado imagens de aplicações já configuradas e algumas são disponibilizadas para uso público. Com essas imagens é possível executar uma versão Linux diferente da instalada no seu computador, como por exemplo, executar um docker Ubuntu em um Debian nativo na maquina.

As imagens não se limitam a somente sistemas operacionais, onde também é possível encontrar imagens de aplicações como mysql, nginx, nodejs, jenkins e entre outras.

Execução

Criando uma aplicação docker para executar um bash em uma imagem Ubuntu.

$ docker run -it ubuntu bash

Os parâmetros passado:

  • run => Executar um novo container
  • -it => TTY interativo
  • imagem => Imagem do serviço ou SO desejado
  • <comando> => Comando que será executado no container

Para caso de curiosidade, é possível constatar que o SO do docker é diferente do Linux nativo.

# cat /etc/issue

Sair do container

Caso utilize o comando exit ou ctrl + d dentro do container, o mesmo será desativado. Para sair do docker sem destrui-lo é utilizado a sequência de teclas ctrl + p + q

Docker - Como instalar

 Nesse primeiro post irei falar um pouco sobre Docker.

Os container (docker) tem como base o isolamento de aplicações e suas dependências em um único sistema operacional (SO). Essa técnica visa também evitar o conflito entre as bibliotecas e APIs, já que versões instaladas podem ocasionar erros dependendo da aplicação.

As maquina virtual (VM) também possibilitam o isolamento da aplicação mas é necessário realizar todo o processo de instalação e configuração de um novo SO para cada máquina criada e isso pode ocasiona retrabalho. A figura abaixo ilustra diferença na arquitetura de uma aplicação utilizando VM e Docker

Arquitetura VM x Docker
http://gordonsun-blog.s3.amazonaws.com/wp-content/uploads/2015/05/docker-containers-vs-vms.png
O docker tem como requisito mínimo que o SO seja linux com kernel 3.8+ e arquitetura 64bits. Em outros sistemas operacionais (MACOS e Windows) são criadas maquinas virtuais Linux para executar o docker de forma transparente para o usuário.

Instalação no Linux Ubuntu 14.04

1. Atualização dos repositórios.

$ sudo apt-get update

2. Instalação do wget caso o mesmo ainda não tenha sido instalado.

$ sudo apt-get install wget

3. Download e instalação do script de instalação do docker.

$ wget -qO- https://get.docker.com/ | sh

4. O usuário padrão não tem permissão para executar o docker, somente o root.

$ sudo docker ps

4.1 Para que o usuário padrão possa acessar o docker é necessário adicionar o mesmo no grupo docker

$ sudo usermod -aG docker usuario
$ docker ps

5. Inicializar docker.

$ sudo service docker stop
$ sudo service docker start