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
Fontes:
https://pt.wikipedia.org/wiki/Docker_(programa)
https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository