O que é o Docker?
“An open platform for distributed applications” - Uma plataforma aberta para aplicativos distribuídos. Essa é a definição no site, mas não fica muito clara no início, porém faz sentido depois. O Docker é uma ferramenta para distribuir aplicações em containers de forma rápida e leve, ou seja você não precisa mais provisionar um servidor para sua aplicação e depois instalar todas as dependências e repetir esse procedimento toda vez que for escalar sua aplicação. Com o Docker sua aplicação e tudo que ela precisa fica no container, é só subir para o servidor e pronto. O Docker apesar de ser cross plataforma, só roda containers linux.
Vantagens:
- Compartilha os recursos da máquina, você não precisa alocar recursos como uma vm, os containers funcionam como processos do computador
- É só plugar e rodar, você não precisar provisionar um servidor inteiro e configurar tudo de novo, instale o Docker baixe as imagens necessárias e suba quantos containers precisar
- Agilize o deploy de aplicações, é só criar um container e rodá-lo no servidor
- Crie serviços simples e isolados, separe sua enorme aplicação em aplicações menores e isoladas que podem ser reutilizadas em vários servidores
- Isole as dependências, com o Docker você cria um container específico para sua aplicação
- Acelere sua entrega contínua, com o Docker você levanta sua aplicação em segundos e pode multiplicá-las em milhares de nós
Site do Docker:
https://www.docker.com/
Instalando o Docker:
O Docker pode ser instalado no Linux, Mac OS e no Windows. O link para as plataformas e locais você pode ver aqui https://docs.docker.com/installation/#installation, neste tutorial estou usando o Ubuntu 14.04.
Para instalar o pacote mais recente do ubuntu (pode não ser a versão mais nova do Docker), faça o seguinte:
$ sudo apt-get update $ sudo apt-get install docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker'/etc/bash_completion.d/docker.io
para ver outras formas acesse: https://docs.docker.com/installation/ubuntulinux/#ubuntu-trusty-1404-lts-64-bit
Após a instalação você pode abrir o console e digitar docker
, com isso você verá a lista de comandos:
Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to bind/connect to or unix://path/to/socket to use A self-sufficient runtime for linux containers. Commands: attach Attach 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 from the containers filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or Login to the docker registry server logs Fetch the logs of a container port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT pause Pause all processes within a container ps List containers pull Pull an image or a repository from the docker registry server push Push an image or a repository to the docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image in the docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container unpause Unpause a paused container version Show the docker version information wait Block until a container stops, then print its exit code
Listando imagens
Para ver a lista de imagens instaladas no seu pc use: docker images
, quando você tiver algumas imagens você terá esse resultado:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE gwmoura/centos-node-hello latest aa8963f7f251 40 minutes ago 460.2 MB centos centos6 68edf809afe7 10 days ago 212.7 MB
Perceba que eu possuo uma imagem do CentOS e que ela tem apenas 212.7 MB, isso mesmo, as imagens baixadas pelo Docker são bem pequenas e vem apenas com o necessário para rodar o sistema operacional, é importante seguir esse padrão, porque o ideal é que cada container Docker seja pequeno e rode apenas uma aplicação. Por exemplo, ao invés de instalar MySQL + Apache + PHP e etc, instale cada aplicação dessa em um container.
Baixando um imagem
Para baixar uma imagem use o comando docker pull [nome-da-imagem]
ex: docker pull ubuntu. O local ideal para baixar mais imagens é: https://registry.hub.docker.com/, lá existem vários repositórios.
Rodando um container
Para rodar um container é só utilizar o comando docker run
, a sintaxe dele é bem simples: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
, como exemplo vou rodar o famoso hello world.
$ docker run ubuntu /bin/echo 'Hello world' Hello world
Caso você queira acessar o container rode o seguinte comando:
$ sudo docker run -t -i ubuntu /bin/bash root@af8bae53bdd3:/#
Listando os processos
Para listar os processos docker use docker ps
ou docker ps -l
$ docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23e3a680fb7e ubuntu:14.04 /bin/echo 'Hello wor 20 minutes ago Exited (0) 20 minutes ago cocky_poincare
Removendo um container
O comando para remover é simples também
$ docker rm cocky_poincare
Perceba que o Docker da um nome aleatório ao container e foi este nome que utilizei, você pode especificar um nome usando o parâmetro --name [nome-do-container]
. Caso você tenha algum container executando uma aplicação na porta 8080, por exemplo, você pode usar o comando docker stop [container_name]
para parar o serviço e para reiniciar é só digitar docker start [container_name]
.
Removendo uma imagem
Para remover uma imagem o comando é simples também, mas antes de removê-la lembre-se de remover todos os containers ligado a essa imagem. O comando é o docker rmi [nome-da-imagem]
.
Aqui foi só uma introdução, no próximo post irei ensinar como criar um container usando o Dockerfile e como fazer o deploy de um aplicação.