Limitando e atualizando limites de memória e CPU no docker

Bom hoje vamos seguir com nosso aprendizado em docker, já vimos sobre comandos básicos, iniciar servidor apache, exportar e importar containers e agora a dica é bem simples porém muito útil. Toda vez que subimos um container sem colocar limites nos recursos, o container pode usar todo o recurso da máquina fisica, isso nem sempre é bom, seja por onerar o host ou mesmo para testes da sua aplicação. Então vamos as dicas.

Antes da dica, vamos a outra dica :), com o comando docker stats podemos ver o consumo de nossos containers:

Agora vamos as nossas dicas de hoje.

Limitar memória do container

Limitar CPU do container

Atualizar limites de container em execução

Alterando limite de memória

Atualizar limite CPU

Sempre lembrando que para pegar o id do container basta executar docker ps.

Iniciando servidor web PHP e Mysql com Docker

De uma maneira muito rápida podemos iniciar um servidor web para testarmos aplicações, páginas, sistemas, etc. Para isso precisaremos de duas ferramentas:

  • Docker
  • Docker Compose

Vou levar em consideração de já tenha os mesmos instalados, pois cada sistema tem seu próprio gerenciador de pacotes e não vou especificar isso no momento.

Iniciando

DockerFile

Para iniciar criaremos um Dockerfile, para quem não está muito familiarizado pode ver um post com comandos básico do docker aqui. Usaremos uma imagem base do Docker Hub, a tutum/lamp.

Docker Compose

Agora na mesma pasta iremos criar o arquivo docker-compose.yml. Com o conteúdo abaixo:

Ps: Lembre de verificar se os caminhos dos arquivos estão corretos em seu sistema, pode variar de linux para linux.

Subindo a aplicação

Subiremos a aplicação com o seguinte comando:

Basta acessar seu localhost, ou ip de sua máquina que o servidor estará UP. A pasta onde foi criado os arquivos anteriores será a pasta raíz do servidor web. Ao iniciar será gerado uma saída parecido com a abaixo:

Fonte

Exportar e importar containers no docker

Exportando imagem

Temos aqui novamente um processo bem simples no docker, para exportar uma imagem uitlizamos o comando

Importando imagem

Fala a verdade é simples ou não é, mais fácil que isso não tem como.

Fonte

Iniciando servidor apache no docker

Para iniciar um servidor apache no docker é muito simples, caso tenha uma imagem que já tenha apache é mais simples ainda. Mas vamos partir do principio que não tenha essa imagem, usaremos uma imagem do repositório do docker.

Caso queira só baixar a imagem, começaremos com o comando:

Para iniciar o container com nosso servidor rodaremos o comando:

Caso queira iniciar também expondo as portas para ter suporte SSL:

Basta acessar o IP de sua máquina que o servidor já estará rodando. Caso queira usar algum projeto web que tenha em sua máquina podemos linkar essa pasta com a pasta do container.

Se caso a porta 80 de seu host esteja sendo usada, é possível mapear outra porta no container. Bastando acessar o IP:8080 para ter acesso ao apache do container.

Fonte

Comandos básicos Docker

Docker é um ferramenta que venha aprendendo a pouco tempo, não explicarei o que é o docker, apenas alguns detalhes no uso. Caso queira uma explicação melhor sobre o que é docker, recomendo esse artigo do Mundo Docker.

Segue abaixo alista dos comandos mais básicos e explicações básicas sobre o docker:

Iniciar container com alguns detalhes a mais:

Sendo que o -i significa interatividade e o -t que queremos um link com o terminal do container.

Iniciar uma sessão bash em um container que já esteja rodando:

Verificar os logs de um container:

Remover todos os containers parados:

Remover uma imagem baixada:

Copiar um arquivo do container para o host:

Salvando alterações de um container modificado

Após instalar alguns programas ou fazer modificações no seu container, é possível que queira salvá-lo para não perder essas alterações. Para isso existe a opção commit do docker que irá gerar uma nova imagem do seu container com as alterações. Pegaremos como base o ID do nosso container:

Com nosso ID em mãos faremos o commit:

Dockerfile

Um Dockerfile é um script que automatiza a criação de imagens docker. Veja alguns exemplos de comandos que podem ser utilizados no Dockerfile. Em outros posts trarei com mais detalhes como cada um funciona.

FROM

Primeira instrução, define a imagem base.

MAINTAINER

Especifica o autor da imagem.

RUN

Equivalente ao comando docker run.

ENV

Define uma variável de ambiente.

EXPOSE

Expõe portas.

ADD

Copia arquivos do host hospedeiro para dentro da imagem.

ENTRYPOINT

Permite que a imagem seja executada como uma aplicativo (a partir da linha de comando especificada).

CMD

Comando que será executado quando a execução do container for acionada.

Exemplo de dockerfile

Para gerar a imagem a partir do nosso dockerfile usaremos o docker build. Lembrando que se criamos o docker file em alguma pasta especifica, deveremos estar dentro desta pasta para executar o comando a seguir:
Por hoje era isso pessoal, em breve estaremos estudando mais sobre o assunto.

Fonte: Diego Garcia