Instalação do Docker e docker-compose
Roteiro de instalação do Docker e docker-compose no Linux.
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 :P
- 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.