Instalando o Docker e Docker Compose no Centos 7

Galera aqui eu vou demostrar como efetuar a instalação do Docker e do Docker compose no Centos 7.

Para melhores praticas de segurança eu vou utilizar um usuário comum para efetuar todo o processo desta forma vamos precisar efetuar a configuração do ambiente para isso.

Vamos criar um usuário comum para o sistema. OBS: Quando estamos trabalhando com um usuário comum no sistema é recomendado que o uid e gid dele seja o numero 1000 pois quando o container subir com dados compartilhados (volumes) o usuário utilizado geralmente vai ser o 1000.

Caso já tenha um usuário com o id e gid 1000 altere os valores com o seguinte comando.

usermod -u 2000 usuario_com_id_1000

Agora vamos criar o grupo com o gid 1000

groupadd -g 1000 douglas

useradd -m -s /bin/bash douglas -u 1000 -g 1000

Agora vamos definir uma senha para o usuário.

passwd douglas

Vamos efetuar a instalação do sudo

yum install sudo

Vamos ajustar o sudo para que ele não fique solicitando a senha

visudo
[...]
## Allows people in group wheel to run all commands
#%wheel ALL=(ALL)       ALL

## Same thing without a password
%wheel  ALL=(ALL)       NOPASSWD: ALL

Agora vamos adicionar o nosso usuário no grupo adequada para poder executar os comandos com o sudo

usermod -aG wheel douglas

Agora vamos efetuar o logout do sistema

exit

Agora vamos efetuar o login com o nosso usuário comum

ssh douglas@192.168.25.52
douglas@192.168.25.52's password:
[douglas@centos7 ~]$

Agora vamos se certificar que não temos nenhum pacote antigo do docker instalado no sistema

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

Agora vamos instalar os pré-requisitos para o Docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Agora vamos adicionar o repositório do Docker

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Agora vamos instalar os pacotes do Docker

sudo yum -y install docker-ce docker-ce-cli containerd.io

Agora vamos subir o serviço do Docker

sudo systemctl start docker

Agora vamos inserir o Docker na inicialização do sistema

sudo systemctl enable docker

Agora vamos adicionar o nosso usuário ao grupo Docker

sudo usermod -aG docker douglas

Agora precisamos efetuar logout

exit

Agora vamos efetuar login novamente no sistema

ssh douglas@192.168.25.52
douglas@192.168.25.52's password:
[douglas@centos7 ~]$

Agora podemos listar os containers

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Instalação do Docker Compose

A Instalação do Docker Compose é simples, vamos obter o binário

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Agora vamos adicionar a permisão de execução ao script

sudo chmod +x /usr/local/bin/docker-compose

Agora vamos criar um link para o nosso docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Agora vamos validar a versão do nosso Docker Compose

docker-compose --version
docker-compose version 1.24.1, build 4667896b

Ajustes para o VIM

Vamos efetuar a instalação do VIM

sudo yum install -y vim 

Agora vamos criar a configuração para o nosso usuário, estas configurações são para tabulações e espaços que podem complicar a nossa vida quando editamos o .yml

vim ~/.vimrc
set ts=2
set sts=2
set et     "expand tabs to spaces

Exemplo de arquivo de configuração do vimrc: GitHub vimrc

Podemos usar o arquivo do Github

Vamos fazer backup do arquivo de configuração antigo

mv ~/.vimrc ~/.vimrc.bkp

Agora vamos obter o novo arquivo de configuração

wget -c https://raw.githubusercontent.com/douglasqsantos/scripts_shell/master/olds/vimrc -O ~/.vimrc

Desabilitando o Firewalld e o Selinux

Para desabilitar o Firewalld vamos executar o seguinte comando

sudo systemctl disable firewalld

Agora vamos desabilitar o Selinux

sudo vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Agora precisamos reiniciar o servidor para que tudo seja aplicado

reboot

Criando um container para teste

Vamos efetuar a criação de um container para testar o nosso Docker

Vamos criar um diretório para armazenar a configuração das nossas images

mkdir -p docker-images/apache

Agora vamos acessar o diretório para criar o nosso arquivo

cd docker-images/apache

Vamos criar o nosso Dockerfile

vim Dockerfile
FROM centos
RUN yum -y install httpd 
CMD apachectl -DFOREGROUND

Agora vamos gerar a nossa imagem

docker build --tag centos_apache:v1 .

Agora vamos subir um container com a nossa imagem, vamos mapear a porta 9090 do CentOS para a porta 80 do container.

docker run -d -p 9090:80 --name centos_apache centos_apache:v1

Agora vamos verificar se o container está rodando

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
afc1a50b1710        centos_apache:v1    "/bin/sh -c 'apachec…"   2 seconds ago       Up 1 second         0.0.0.0:9090->80/tcp   centos_apache

Vamos verificar os logs do nosso container

docker logs centos_apache
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

Agora vamos efetuar um teste acessando o ip do servidor docker na porta 9090 http://192.168.25.52:9090

Para acompanhar o consumo do container podemos utilizar o seguinte comando

docker stats centos_apache
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
afc1a50b1710        centos_apache       0.30%               8.344MiB / 487.2MiB   1.71%               16.1kB / 334kB      32.4MB / 303kB      279

Referências