Como baixar e usar imagens prontas do repositório Docker – Elias Praciano
Categories
Linux PHP Programação Tutoriais

Como baixar e usar imagens prontas do repositório Docker

O repositório do Docker tem uma grande quantidade de imagens prontas para usar e, entre elas, é possível encontrar muita coisa útil, como um servidor CentOS/Apache, pronto para rodar.
Saiba como encontrar o que você quer lendo este artigo.

Neste post introdutório vou mostrar como trabalhar com as imagens do Docker Hub.
Tanto é possível usar imagens prontas, como alterá-las e criar novas a partir do zero.
Esta última opção é voltada para usuários mais avançados.
A primeira, permite que usuários novatos possam trabalhar com imagens feitas por profissionais e que podem ser encontradas no repositório oficial do Docker — ou Docker Hub.
Na primeira vez em que você roda uma imagem do Docker Hub, ela é baixada para o seu computador — o Docker usa a cópia local para trabalhar.
Se você ainda não instalou o Docker, confira estes métodos de instalação.
logo docker com bombas nos contêineres
Use o comando docker images para listar (se houver) imagens armazenadas localmente no seu sistema.
O diretório de armazenamento das suas imagens é o ‘/var/lib/docker’, caso você esteja curioso.

O que é possível encontrar no Docker Hub

É possível baixar uma das várias imagens prontas do repositório do Docker. Entre elas, há de várias distribuições, tais como Ubuntu, CentOS, Arch Linux, Debian etc.
Você pode baixar também uma imagem vazia, adequada para quem deseja um modelo (ou esqueleto) para construir a sua própria, “do zero”.
Entre recursos e funcionalidades, o hub oferece os seguintes itens:

  • Repositórios de imagens — encontre, gerencie, armazene suas imagens e baixe outras – da comunidade, privadas ou oficiais.
  • Builds automatizados — crie novas imagens automaticamente durante a mudança de repositório fonte GitHub/Bitbucket.
  • Webhooks — um dos recursos dos builds automatizados, permite disparar ações programadas após uma transferência de sucesso a um repositório.
  • Organizações — cria grupos de trabalho para gerenciar acesso de usuário a repositórios de imagens.
  • Integração ao GitHub e ao Bitbucket — adiciona o Hub e suas imagens Docker ao seu fluxo de trabalho (workflow) atual.

Você pode buscar e baixar imagens públicas do Docker Hub livremente.
Contudo, para enviar e armazenar suas imagens no hub é necessário ter uma conta e assinar o serviço.

Como acessar os repositórios de imagens do Docker

O Hub oferece um local onde desenvolvedores podem montar e armazenar imagens Docker — que podem ser distribuídas publicamente ou apenas dentro da sua equipe de trabalho.
Você pode fazer uma busca por imagens no repositório público com o comando search. Veja um exemplo de busca por imagens relacionadas a distro Linux CentOS:

docker search centos
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                        The official build of CentOS.                   1960      [OK]       
jdeathe/centos-ssh            CentOS-6 6.7 x86_64 / SCL/EPEL/IUS Repos /...   15                   [OK]
million12/centos-supervisor   Base CentOS-7 with supervisord launcher, h...   9                    [OK]
blalor/centos                 Bare-bones base CentOS 6.5 image                8                    [OK]
nimmis/java-centos            This is docker images of CentOS 7 with dif...   7                    [OK]
torusware/speedus-centos      Always updated official CentOS docker imag...   7                    [OK]
centos/mariadb55-centos7                                                      3                    [OK]
nathonfowlie/centos-jre       Latest CentOS image with the JRE pre-insta...   3                    [OK]
nickistre/centos-lamp         LAMP on centos setup                            3                    [OK]
consol/sakuli-centos-xfce     Sakuli end-2-end testing and monitoring co...   2                    [OK]
feduxorg/centos-postgresql    Centos Image with postgres                      1                    [OK]
softvisio/centos              Centos                                          1                    [OK]
layerworx/centos              CentOS container with etcd, etcdctl, confd...   1                    [OK]
darksheer/centos              Base Centos Image -- Updated hourly             1                    [OK]
lighthopper/orientdb-centos   A Dockerfile for creating an OrientDB imag...   1                    [OK]
yajo/centos-epel              CentOS with EPEL and fully updated              1                    [OK]
ericuni/centos                centos dev                                      0                    [OK]
blacklabelops/centos          CentOS Base Image! Built and Updates Daily!     0                    [OK]
ustclug/centos                 USTC centos                                    0                    [OK]
januswel/centos               yum update-ed CentOS image                      0                    [OK]
jsmigel/centos-epel           Docker base image of CentOS w/ EPEL installed   0                    [OK]
grayzone/centos               auto build for centos.                          0                    [OK]
lighthopper/openjdk-centos    A Dockerfile for creating an OpenJDK image...   0                    [OK]
insaneworks/centos            CentOS 6.5 x86_64 + @update                     0                    [OK]
timhughes/centos              Centos with systemd installed and running       0                    [OK]

Você também pode fazer uma busca no website oficial do Docker. Repositórios privados não serão listados.
No próximo exemplo vou mostrar como baixar uma imagem do Alpine Linux:

docker pull alpine

Veja o resultado do meu download, abaixo:

latest: Pulling from library/alpine
ee54741ab35b: Pull complete 
Digest: sha256:24a36bbc059b1345b7e8be0df20f1b23caa3602e85d42fff7ecd9d0bd255de56
Status: Downloaded newer image for alpine:latest

Neste momento, já é possível ver a imagem na relação de disponíveis localmente:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              90239124c352        9 days ago          4.79 MB

O Alpine é uma distro GNU/Linux construída em torno das bibliotecas musl, libc e do Busybox.
Estas características permitem que seja bastante pequena e muito eficiente em termos de uso de recursos do sistema.
Para rodar no Docker, o contêiner não requer mais do que 8 MB.

Para rodar a imagem, use o comando run.
Uma vez que o Alpine é baseado no Busybox, é fácil iniciar esta imagem rodando-o:

docker run -t -i alpine busybox

Dá para fazer mais do que isto.
Nos exemplos abaixo, determinamos a versão do Alpine em uso no contêiner:

docker run -t -i alpine cat /etc/alpine-release
3.3.1

Quando uma imagem não é encontrada localmente, ela é baixada automaticamente, pelo Docker.
Se você quiser rodar uma shell dentro do contêiner Alpine, use o ash (semelhante ao Bash):

docker run -t -i alpine /bin/ash

Como rodar um servidor LAMP dentro do Docker

Eu sei, eu sei… este assunto merece um post só para ele — ainda assim, insisto em usar este exmplo pra ilustrar a utilidade das imagens prontas do Docker. 😉
Você pode montar o seu próprio servidor LAMP dentro do Docker. Mas também pode baixar uma imagem em que ele já venha pronto.
Neste caso, sugiro a imagem do usuário nickistre, com o CentOS rodando um servidor Linux, Apache, MySQL e PHP.
Baixe a imagem e veja como proceder:

docker pull nickistre/centos

A seguir rode a imagem, com o comando ifconfig (para você saber exatamente em qual IP encontrar o servidor)

docker run -t -i nickistre/centos-lamp ifconfig

Veja o meu resultado:

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:03  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:90 (90.0 b)  TX bytes:180 (180.0 b)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Na segunda linha, acima, se encontra o endereço IP, que eu devo acessar, do meu navegador: inet addr:172.17.0.3
Coloque-o no ar e acesse o IP informado no seu navegador favorito:

docker run -t -i nickistre/centos-lamp

Apache server running on CentOS
Esta é uma entre várias formas de se usar imagens prontas em contêineres Docker.
Desenvolvedores web podem achar mais interessante rodar seus servidores desta forma, do que instalar o LAMP inteiro em sua máquina — além de tudo, este método permite alterar e testar diferentes configurações do servidor, sem bagunçar o seu sistema.

Referẽncias

Como instalar e usar o Docker.
https://docs.docker.com/docker-hub/overview/.
http://www.alpinelinux.org/about/.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

One reply on “Como baixar e usar imagens prontas do repositório Docker”

Não entendi muito bem. Por exemplo, fiz o pull deste carinha que encontrei no docker hub:

laravelsail / php74-composer:
executei:
docker pull laravelsail/php74-composer

depois que ele baixou, fui na pasta do meu projeto tentei executar o run com o nome da imagem que ficou disponível para mim na minha extensão do docker no vscode:

docker run laravelsail/php74-composer

Porém nada aconteceu. Tentando aprender ainda, comecei a mexer hoje com docker, mas ta meio complicado de encontrar na internet uma resposta que deve ser muito simples.

Mas parabéns pelo post. Pelo menos deu uma pequena clareada. 😉

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.