terça-feira, 3 de abril de 2018

Docker no Ubuntu 16.04

Docker é um gerenciador de contêiners desenvolvido em cima dos LXC (Linux Containers). Um contêiner, diferentemente de uma máquina virtual, é utilizado para rodar um processo compartilhando recursos do kernel nativo e não uma instalação totalmente nova, com libs próprios, como acontece nas VMs.

Como foi desenvolvido em cima do LXC, o funcionamento é 'nativo' e acontece muito bem. Para outros sistemas, é necessário instalar o Docker Toolbox, que cria uma VM por baixo dos panos rodando linux e oferecendo o acesso aos contêiners de forma simplificada. Entretanto, a MS lançou recentemente uma ferramenta denominada "Windows Subsystem for Linux", oferecendo suporte nativo para o Docker rodar sem a necessidade de uma VM.

Para instalação no Ubuntu 16.04, certifique-se que não há antigas versões do docker:
sudo apt remove docker docker-engine docker.io

Esse comando não irá remover imagens ou seus containers, apenas habilitar a utilização do novo docker.

Pacotes necessários para o apt conseguir acessar servidores FTP:
sudo apt install apt-transport-https ca-certificates curl software-properties-common

Adicionar chave GPG
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Adicionar o repositório oficial para amd64
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Atualize a lista de repositórios e instale o Docker community edition:
sudo apt update && sudo apt install docker-ce -y

O Docker sempre funciona a partir do usuário root, porém podemos adicionar ele ao grupo do usuário
sudo gpasswd -a $USER docker
Para validar as informações, pode ser utilizado o comando  $ newgrp docker porém nem sempre funciona, dependendo do que há no cache de sessão. Se não funcionar, faça um logout e login.

Para testar, execute o contêiner de hello-world, cuja imagem será baixada caso não exista:
docker run hello-world

Uma imagem é o arquivo utilizado para construir um contêiner. A partir dela, é definida como o contêiner se comporta enquanto ativo.