Falha de segurança, atualize seu Docker para 1.8.3

Standard

Recentemente foi encontrada uma vulnerabilidade de segurança no Docker, que permite modificação de conteúdo nas imagens locais do Docker Engine.

docker-revoltadoEm tempo de envio de image, os IDs das camadas do Docker estão atualmente geradas randomicamente e aplicadas na camada. Uma imagem intencionalmente criada para colidir com um ID de camada existente pode sobrescrever uma camada já obtida anteriormente, possivelmente de uma outra imagem, possibilitando que um conteúdo inesperado seja executando no comando “run” dessa outra imagem.

Continue lendo

Entendendo o Docker parte 1

Standard

O que é Docker?

De forma bem resumida podemos dizer que é uma plataforma aberta criada com objetivo de facilitar o desenvolvimento, implantação e execução de aplicações em ambientes isolados. Ela foi desenhada especialmente para disponibilizar sua aplicação da forma mais rápida possível.

Usando o Docker você pode gerenciar facilmente a infraestrutura da sua aplicação, ou seja, isso agilizará o processo de criação, manutenção e modificação do ambiente completo do seu serviço. O melhor é que tudo isso pode ser feito sem a necessidade de qualquer acesso privilegiado a sua infraestrutura corporativa. A equipe responsável pela aplicação poderá participar da especificação do ambiente, onde nesse caso eles devem fornecer um determinado arquivo com a descrição dessa solução, que conterá a informação de como a aplicação será disposta nesse espaço, em qual porta fornecerá seu serviço, quais dados de volumes externos serão requisitados e outras possíveis necessidades.

O docker disponibiliza uma nuvem publica para compartilhamento dos ambientes prontos, que podem ser utilizados para viabilizar customizações especificas para situações pessoais, ou seja, é possível obter um ambiente pronto do apache e configurar os módulos específicos que precisa dele e assim criar seu próprio ambiente customizado. Tudo isso com poucas linhas de configuração.

O Docker utiliza o modelo de container para “empacotar” sua aplicação, que após ser transformada em uma imagem docker, poderá ser reproduzida em qualquer porte de plataforma, ou seja, caso sua aplicação funcione sem falhas em seu notebook, ela funcionará também no servidor ou no mainframe.

Os containers são isolados a nível de disco, memória, processamento e rede. Essa separação permite uma grande flexibilidade, onde ambientes distintos podem coexistir no mesmo host, sem causar qualquer problema. Vale salientar que o overhead nesse processo é o mínimo necessário, pois cada container normalmente carrega apenas um processo, que é aquele responsável pela entrega do serviço desejado, em todo caso esse container também contém todos os arquivos necessários (configuração, biblioteca e afins) para sua execução completamente isolada.

Outra coisa interessante no docker é sua velocidade para viabilizar o ambiente desejado, pois como é basicamente o inicio de um processo e não um sistema operacional inteiro, o tempo de disponibilização é normalmente medido em segundos.

Virtualização a nível do sistema operacional

O modelo de isolamento utilizado no Docker é a virtualização a nível do sistema operacional, que é um método de virtualização onde o kernel do sistema operacional permite que múltiplos processos sejam executados isoladamente no mesmo host. Esses processos isolados em execução são denominados no Docker de container.

Para criar o isolamento necessário desse processo, o Docker usa a funcionalidade do Kernel denominada namespaces, que cria ambientes isolados entre containers, ou seja, os processos em execução de um container não terão acesso aos recursos de outros containers, a não ser que isso seja expressamente liberado em configuração de cada ambiente.

Para evitar a exaustão dos recursos da máquina por apenas um ambiente isolado, o Docker usa a funcionalidade cgroups do kernel, que é responsável por criar limites de uso do hardware a disposição. Com isso é possível coexistir no mesmo host diferentes containers, sem que um afete diretamente o outro por uso exagerado dos recursos compartilhados.

Na próxima parte dessa série de artigos sobre Docker falaremos de sistema de arquivos, camadas e muitas outras coisas interessantes.

Pode executar seus containers como root?

Standard

Tenho visto ultimamente muitas pessoas preocupadas com questões de segurança do Docker. Isso é algo muito louvável e até mesmo esperado para uma tecnologia que parece se consolidar rapidamente em nosso mercado, mas como todo processo de consolidação, acho que temos alguns equívocos em como esse cuidado de segurança é aplicado.

Caso discorde da minha opinião, por favor comente. Vamos iniciar um debate franco sobre esse assunto.

0812.sdt-docker Continue lendo

Por que containers?

Standard

Introdução

Container tem sido uma palavra muito usada ultimamente nos meios mais técnicos, principalmente aqueles que estão sendo motivados pela cultura DevOps, mas toda novidade sempre vem acompanhada daquela dúvida: “por que devo usar?”.

Esse artigo tem como objetivo apresentar alguns dos motivos que tem feito o modelo de containers ser um sucesso e tentar sanar algumas das principais dúvidas que recebemos sobre esse assunto.

O que são os containers?

É uma nova forma de abstração de infraestrutura que atua na virtualização a nível do sistema operacional, ou seja, eles – os containers – criam uma espécie de “caixa” que pode encapsular praticamente qualquer processo, por conta disso o nome container. Essas caixas normalmente contém apenas um serviço em execução, e são isoladas no processamento, memória RAM, disco e rede.

os-virtualization

Continue lendo

Vídeo interessante sobre DevOps, com legenda em pt-br

Standard

Desde que comecei a estudar sobre DevOps, encontrei um vídeo que me ajudou muito a entender como funciona essa nova cultura. Como o inglês ainda é uma barreira para alguns técnicos no Brasil, resolvi criar legendas em português do Brasil para esse vídeo:

Caso não apareça a legenda, habilite na barra de configuração do vídeo.