Iniciando com o Docker

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.

anúncio