:::: MENU ::::

Instalando o Docker

Já discutimos no outro tópico o que é o Docker, então, hoje vamos colocar as mãos na massa um pouco, já é de nosso conhecimento que o Docker oferece uma maneira rápida e eficiente de portar aplicações entre máquinas, sendo virtual ou fisíca, você tem toda sua infraestrutura configurada em uma imagem que pode ser gerada a partir de um dockerfile ou ser feito o download de alguma imagem já prontas (Docker Hub por exemplo), sendo leve e enxuto ele permite você subir e executar, quase instantaneamente um container com sua aplicação de maneira segura e isolada.

docker

 

Neste artigo vou cobrir com um pouco mais de detalhes, como instalar e utilizar o Docker, lembrando que minha máquina é o Ubuntu 14.04 LTS então, caso seu SO for diferente do qual eu uso neste artigo pode seguir o Guia de Instalação do próprio site do Docker  (https://docs.docker.com/engine/installation/).

Instalação

Os requisitos mínimos para se executar o meninão é ter um SO 64 bits e no caso do linux ter o kernel na versão 3.10 no mínimo, então gafanhoto, se você quer descobrir qual a versão do seu kernel execute o seguinte comando no terminal :

uname -r

Bom depois de descobrir que sua versão suporta o role (caso não suporte, atualize seu SO Gafanhoto!!!), vamos dar um atualizada nos pacotes

sudo apt-get update

O próximo passo é instalar os certificados de autoridade, para  saber mais sobre esse tipo de certificado de uma lida nisso (https://en.wikipedia.org/wiki/Certificate_authority)

sudo apt-get install -y apt-transport-https ca-certificates
Com o CA instalado é hora de adicionar o GPG key:
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Vamos editar o docker.list, se o arquivo o não existir pode cria-lo,  caso já exista limpa o arquivo para não ter problemas de versão:
sudo vi /etc/apt/sources.list.d/docker.list

Adicione a seguinte linha, lembrando que isso pode variar d acordo com seu SO:

deb https://apt.dockerproject.org/repo ubuntu-trusty main

salve o arquivo e atualize os pacotes novamente:

sudo apt-get update

Teve casos de não conseguir atualizar os pacotes por faltar o driver https

E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?

corrigimos isso com o seguinte comando:

sudo apt-get install apt-transport-https

Executa o update mais uma vez:

sudo apt-get update

vamos purgar o repo caso ele exista:

sudo apt-get purge lxc-docker

E instalar direto de um repositorio correto

sudo apt-cache policy docker-engine

Com os pré-requisitos atualizados é só instalar o meninão:

sudo apt-get install docker-engine

Iniciar o mesmo:

sudo service docker start

e finalmente fazer um teste:

sudo docker run hello-world

Feito isso parabéns gafanhoto o docker esta instalado :)

Comenta e pergunta, vamos aprender juntos

 


Um pouco de Docker

Um assunto que tem sido muito comentado na internet ultimamente é sobre Docker, mas o que é isso? De onde vem? Devo usar? .. Calma uma coisa de cada vez gafanhoto, mas poxa o que é Docker?

Era uma vez….

Docker é uma plataforma Open Source desenvolvida em Go,  o que começou como um projeto interno na dotCloud com  Solomon Hykes na França, tendo sua primeira versão 0.9 liberada em Março de 2013, hoje tem mais de 28.000 de estrelas e quase 8.000 Forks no GitHub, conseguiu chamar a atenção de grandes empresas por causa da simplicidade com que resolvia problema corriqueiros na vida de desenvolvedores, DevOPs e SysAdmins.

O que ele faz?

Docker implementa uma high-level API que executa leves processos isolados chamados Containers, esse Container permite que você empacote sua aplicação e todas as suas dependências dentro de uma unidade, “embrulhando”, por assim dizer, sua aplicação em um sistema completo, que contém seu código fonte,  ferramentas, bibliotecas do sistema, enfim tudo que é necessário para rodar sua aplicação.

Baseado em LXC

 Cada Docker Container foi construido no topo das facilidades fornecidas pelo kernel mais moderno do Linux, diferente de uma maquina virtual, não é necessário incluir um SO separado, ao invés disso ele se baseia nas funcionalidades do kernel e isola os recursos (CPU, memória, I/O, etc)  e separa os namespasces para isolar a sua aplicação do sistema operacional do host. Docker acessa esses recursos de virtualização via LXC(Linux Containers), facilitando assim o acesso e gerenciamento dos recursos do Host.

Container vs Virtual Machine

Arquitetura com Docker Engine

Arquitetura com Docker Engine

Arquitetura com VM utilizando Hypervision

Arquitetura com VM utilizando Hypervision

 

 

 

 

 

 

 

 

 

Containers são muito similares em alocação e isolamento de recursos comparados a Maquinas Virtuais(VM), a diferença esta em sua arquitetura, que permite ao container ser muito mais portátil e eficiente, entrelinhas, isso quer dizer que, enquanto cada VM tem sua aplicação, seus binários necessários, suas  bibliotecas e todo o sistema operacional, um Container tem sua aplicação e suas dependências apenas, já que o mesmo compartilha o kernel com outros container e com o próprio host, mas rodando em processos isolados desvinculado assim de qualquer infraestrutura ou Cloud.

Porque usar?

A comunidade Docker defende alguns pontos para ganhar mais produtividade:

Performance: Pelo fato de utilizar o  mesmo kernel do host, o ganho de performance é gigantesco, sem contar que sua inicialização é praticamente instantânea.

Agilidade: Docker da ao desenvolvedor total liberdade para definir, criar e fazer deploy em seus ambientes de maneira fácil e rápida.

Controle: Docker permite ao desenvolvedor total controle no código-fonte de sua aplicação e seu ambiente, aumentando assim seu gerenciamento, tornando a aplicação padronizada e pronta para escalar de forma segura e rápida.

Portabilidade: De adeus à aquele velho problema, funciona na maquina do dev, mas em produção não, com Docker você faz sua aplicação funcionar em qualquer ambiente graças aos Containers e imagens.

Confiabilidade: Você consegue fazer deploy com Docker nos principais Cloud Markplaces como Aws, Azure, Heroku e IBM utilizando suas próprias imagens ou baixando da comunidade do Docker Hub.

Sem contar que o Docker é Open Source, possui uma vasta documentação e uma comunidade bastante ativa.

Dúvidas?

Pergunta ae, Comenta ae ou Reclama ae =)

Link’s:

https://github.com/docker/docker

https://hub.docker.com/

http://www.mundodocker.com.br/o-que-e-docker/

http://www.ricardomartins.com.br/docker-um-engine-linux-container/

https://www.docker.com/

https://en.wikipedia.org/wiki/Docker_(software)


O que é um Full Stack Developer?

Será que é possível um mero mortal conhecer todas as facetas da stack de desenvolvimento? Provavelmente não, mas o mercado esta cheio de vagas e a tendência é crescer mais ainda, o Facebook esta contratando Full Stack Developers, o Google esta contratando, Startups correm atrás desse tipo de profissional, mas que raios um  Full Stack faz?

Para mim, Full Stack Developer é um indivíduo com familiaridade em muitas camadas do processo de desenvolvimento de software , talvez mestre em algumas camadas, mas extremamente interessado em todas elas.

Um bom Full Stack tem que ter conhecimento de alguns “áreas”,  exemplos:

  • Rede, Servidor e Ambiente de Hospedagem
  • Modelagem de Dados
  • Lógica de Negócio
  • API
  • UI e UX
  • Entender como o cliente precisa que o negócio funcione
  • Ser um bom escritor de testes
  • Saber automatizar processos do ambiente

Entre outras coisas …

Eu não tenho certeza se você pode ser um Full Stack completo sem ter trabalhado em vários projetos, idiomas, plataformas e pessoas em sua carreira,  ao meu ver vai um pouco além de um “Engenheiro Sênior”, vai além de escrever um código bem escrito e testado, vai além de ser um poliglota de linguagens de programação, esta acima de um faz tudo sofisticado.

E antes que eu me esqueça,

Bem-vindo ao meu blog =),

 

Deixa seu comentário