Instalando e Configurando Docker no CentOS 7

Este artigo aborda como instalar e configurar o Docker no Linux CentOS 7 64 bits, e os comandos principais para utilização.

 

O que é o Docker:

 

Docker é um projeto de código aberto lançado em 2013 que permite a criação de contêineres que rodam softwares de recursos compartilhados, fornecendo uma camada adicional de abstração e automação de virtualização de sistema de nível operacional em Linux, Mac OS e Windows, sendo assim uma solução de virtualização em nível de sistema operacional.

 

O docker é uma alternativa de virtualização em que o kernel da máquina hospedeira é compartilhado com a máquina virtualizada ou o software em operação, portanto um desenvolvedor pode agregar a seu software a possibilidade de levar as bibliotecas e outras dependências do seu programa junto ao software com menos perda de desempenho do que a virtualização do hardware de um servidor completo. Assim, o docker torna operações em uma infraestrutura como serviços web mais intercambiável, eficientes e flexíveis.

 

Segundo uma análise da 451 Research, o “docker é uma ferramenta que pode empacotar um aplicativo e suas dependências em um recipiente virtual que pode ser executado em qualquer servidor Linux. Isso ajuda a permitir flexibilidade e portabilidade de onde o aplicativo pode ser executado, quer nas instalações, nuvem pública, nuvem privada, entre outros.

 

 

Iniciando

 

Atualize o CentOS antes de inciar a instalação:

yum -y update

 

Instale o EPEL-RELEASE

yum -y install epel-release

 

Caso tenha alguma versão anterior instalada do Docker digite o seguinte comando para remove-la.

yum -y remove docker \ docker-common \ docker-selinux \ docker-engine

 

 

Vamos iniciar a instalação de uma versão do Docker CE (Community Edition)

 

Requer a instalação dos seguintes pacotes, caso não tenha execute o comando abaixo:

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

 

Agora adicionamos o caminho para download no repositório:

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

 

Podemos habilitar o repositório Edge ou Test, neste caso vamos utilizar o Edge, para isso execute o comando abaixo:

yum-config-manager --enable docker-ce-edge

 

 

Atualizaremos o makecache do yum com o comando:

yum makecache fast

 

 

Agora instalamos o Docker:

yum -y install docker-ce

 

 

Inicializar o Docker:

$ systemctl start docker

 

Verificar o status do serviço Docker:

systemctl status docker

 

 

Parametrizando o Docker para iniciar no boot:

systemctl enable docker

 

Principais comandos de configuração

 

Abaixo segue uma lista dos principais comandos utilizado para você gerencia-lo.

# docker -help
Flag shorthand -h has been deprecated, please use --help
unknown shorthand flag: 'e' in -elp
See 'docker --help'.

Usage:	docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -D, --debug              Enable debug mode
      --help               Print usage
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  checkpoint  Manage checkpoints
  config      Manage Docker configs
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  deploy      Deploy a new stack or update an existing stack
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

 

Comando para executar o hello-world:

docker run hello-world

 

Verificar o comando executado:

docker images

 

Utilize o comando images para listar:

docker images

 

Será apresentado uma tabela no seu Terminal com:

REPOSITORY – repositório
TAG – a tag utilizada no repositório (é setado pelo mantenedor)
IMAGE ID – o ID da Imagem
CREATED – quando essa imagem foi criada
SIZE – tamanho dessa imagem

 

Como adicionar imagens locais?

 

Utilize o comando search para procurar a imagem e o comando pull para baixar:

docker search ubuntu

 

Encontrado a imagem correta, utilize pull com o nome dessa imagem:

docker pull ubuntu

 

Como remover imagens locais?

 

Localize o ID ou nome do repositório com o comando docker images.

Com o id ou o nome do repositório em mãos, utilize o comando rmi para excluir as imagens.

docker rmi ID_ou_nome_da_imagem

 

Criar um container

 

Para executar um container utilize o comando run com o nome da imagem que vá utilizar para a criação:

docker run nome_da_imagem

 

Criar um container e entrar no Terminal

 

Conseguimos criar um container e já entrar nesse container com o comando -it:

docker run -it ubuntu /bin/bash

 

Vai subir um container com o Ubuntu e entrar no Bash.

 

O -i significa interatividade e o -t que queremos um link com o Terminal do container.

Criar um container com um apelido

Você pode colocar apelidos nos containers para facilitar sua organização passando por parâmetro o –name para o comando docker run:

docker run --name lnxubuntu ubuntu

 

Perceba que logo depois do parâmetro –name vem o nome que deseja e o nome da imagem que vai ser utilizada para gerar o container.

Nesse caso a imagem ubuntu e o alias lnxubuntu.

Verificar o estado ou encontrar o ID de um container

Você consegue uma lista dos containers ativos com o comando ps:

docker ps

 

Vai aparecer uma tabela com:

 

CONTAINER ID – ID do container
IMAGE – a imagem que foi utilizada para gerar esse container
COMMAND – o comando passado como parâmetro para esse container (exemplo o /bin/bash)
CREATED – a data da criação do container
STATUS – o estado do container (parado ou em funcionamento)
PORTS – as portas compartilhadas entre host e container
NAMES – e o nome que você deu ao container, se o fez

 

O ps só vai mostrar os containers que estão em atividade, para verificar todos os containers criados, incluindo os que estiverem parados, utilize o ps -a:

docker ps -a

 

Para pegar apenas o ID do container do topo da tabela, utilize o comando ps -qa

Remover um container

Remover um container seria o mesmo que desligar a máquina virtual.

Utilize o comando rm para remover o container com o ID que você pode pegar com o docker ps ou o apelido que você escolheu:

docker rm id_ou_apelido

 

Outras informações úteis que o Docker pode nos passar sobre o container

Informações de uso de Hardware do container:

docker stats id_ou_apelido

 

Veremos informações como:

CONTAINER – ID do Container
CPU % – uso de CPU em porcentagem
MEM USAGE / LIMIT – Memória usada/Limite que você pode ter setado
MEM – uso de memória em porcentagem
NET I/O – I/O de Internet
BLOCK IO – Outros processos de I/O.

 

docker inspect id_ou_apelido

 

Esse comando trás muita informação útil, então é bom dar uma olhada na documentação oficial para não se perder pelas linhas!

Commitar alterações em uma imagem

As alterações que você faz em um container, durante sua execução, não são salvas, a menos que você gere uma nova imagem com base nesse container.

 

Para commitar o que você fez em uma imagem, utilize o comando commit:

docker commit ID/apelido nome_da_nova_imagem

 

Ele vai gerar uma nova imagem a partir desse commit.

Mapeando uma porta para o container

 

Usamos o comando -p:

docker run -it -p 8080:80 ubuntu

 

Bem útil para listar uma porta para um servidor web:

docker run -it -p 8080:80 nginx

 

Estamos informando que a porta 8080 no Host é aberta e deve ser mapeada na porta 80 do container.

Montar containers auto destrutivos

Usando o comando –rm, podemos montar containers que se destroem ao sairmos da sessão.

 

Exemplo utilizando o NGINX.

docker run -it --rm -p 8080:80 nginx /bin/bash

 

Ao usar um exit para sair do Terminal do SO rodando no container, o mesmo será removido.

Executando containers em segundo plano

Podemos executar o container e deixar ele em segundo plano, sem precisar ficar conectado pelo Shell, com o comando -d.

 

Exemplo utilizando o NGINX.

docker run -d -p 8080:80 nginx /usr/sbin/nginx -g

 

Para controlar esse container usamos os comandos stop e start:

docker stop id_ou_apelido

 

Para parar e:

docker start id_ou_apelido

 

Para ativar o container.

Removendo todos os containers e imagens de uma só vez

 

Usamos um pouquinho de Shell Script e conseguimos automatizar o processo de remoção de todos os containers ativos com:

docker rm 

docker ps -qa

 

Para entender o que o $(docker ps -qa) está fazendo, execute somente esse comando no Terminal e veja o retorno.

 docker ps -qa

 

Para imagens

docker rmi 

docker images -q

 

Como executar comandos, sem precisar estar dentro do container?

 

Para não precisar acessar um container para executar comandos basicos, podemos usar o exec:

docker exec -it id_ou_apelido

 

comando ex.:

docker exec -it ubuntinho ifconfig eth0

 

Ferramenta UI para gerenciamento WEB

 

https://portainer.io/

 

Fontes:

https://pt.wikipedia.org/wiki/Docker_(programa)
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository