Docker é uma ferramenta para isolamento de software num outro sistema de arquivos que tenha tudo que precisa para rodar: arquivos binários, arquivos de configuração, ferramentas do sistema, etc. Assim fica garantido que o software sempre rodará da mesma forma, independente do seu ambiente.
docker-compose é uma ferramenta que auxilia iniciar vários softwares com o Docker a partir de um arquivo yml, desta forma você não precisa decorar ou criar scripts para fazer isso. Ele até mesmo isola cada projeto numa ilha.
Este post é um roteiro de instalação de ambas, existem várias formas de instalar, mas aqui vou usar o jeito mais simples.
Instalando
Se você não usa o pacman como gerenciador de pacotes (ou não sabe o que isso significa) execute o comando abaixo para instalar:
% wget -nv -O- https://get.docker.com/ | sh
Esse script está pronto para rodar em Debian, Fedora, Oracle, CentOS e RedHat (assim como derivados, claro).
Essa é a primeira parte: instalar, agora ainda é necessário configurar.
Inicializando
Se você não sabe como seu sistema de inicialização funciona (ou não sabe o que isso significa) é bem provável que o docker já esteja inicializado, mas caso não tenha inicializado, basta rodar esse comando:
% sudo start docker
Se você receber esse erro:
% sudo start docker
start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Você está numa versão mais nova do Ubuntu então você tem que rodar:
% sudo service docker start
Dica da Marina Limeira 🙂
Com tudo certo, a próxima etapa é configurar.
Configurando
Agora você precisa adicionar seu usuário no grupo chamado docker.
Existem várias formas de fazer isso, eu vou fazer a mais simples e que, certamente, funciona para todas as distribuições Linux:
1º. Edite o arquivo /etc/group , esse arquivo é um arquivo do sistema então você terá que usar o sudo, algo como:
% sudo nano /etc/group
2º. Procure a linha que tem o grupo docker, ela deve se parecer com:
docker:x:142:
Não tem problema se o número não for o mesmo. Mude a linha para algo como:
docker:x:142:meu_usuario
Caso o mesmo computador seja partilhado por mais de uma pessoa separe os usuários por vírgula, ou seja:
docker:x:142:meu_usuario,dmitry
Use control+x e depois tecle enter, assim ele salvará o arquivo.
Mais uma vez: existem várias formas de fazer o processo seguinte, mas eu vou usar o mais geral:
3º. Faça logout e login novamente.
Pronto, para testar abra um terminal e digite:
% docker ps
Se esse comando retornar algo como
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
É por que tudo deu certo :).
Testando
Faça um teste com ruby:
% docker run -it ruby irb
irb(main):001:0>
A primeira vez que esse comando roda ele mostra uma barra de progresso, isso é normal: o docker baixa os containers que não tem na sua máquina do docker hub. Digite exit e execute o comando novamente e você verá que ele não mais baixa a imagem.
Agora vou explicar um pouco do comando acima:
- docker é o executável que fará a chamada para o daemon do Docker;
run é um subcomando do docker, esse em específico significa rodar um comando dentro do container e sair;
-it é para rodar em modo interativo e em modo tty, isso significa que você vai executar um comando e ele vai rodar “anexado” no seu terminal tty 😛
ruby é o nome da imagem no Docker Hub;
e, por fim, irb é o comando que será executado dentro do Docker, tente por exemplo executar o mesmo comando mudando para bash.
Instalando o docker-compose
A instalação do docker-compose é que vejo mais gente errando (eu incluso).
No Linux:
1º. Entre como sudo:
% sudo su -
2º. Execute essa linha:
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
E depois essa:
chmod +x /usr/local/bin/docker-compose
Essa informação está na página de instalação do próprio docker-compose.
Conclusão
Docker e docker-compose são duas ferramentas que uso bastante no meu dia-a-dia, até desinstalei banco de dados, interpretador Ruby e tudo o mais da minha máquina.
Para você testar tudo e até mesmo ter um ponto de partida para caso queira adicioná-los no seu projeto eu recomendo que você dê uma olhada nesses dois projetos:
Basta seguir os passos que tem no README de cada um.
Thanks to Rafael Belo, Thiago Araújo Silva, and Marina Limeira.
We want to work with you. Check out our "What We Do" section!