Docker - Containers em Linux (parte 2)

Vamos para a segunda parte deste artigo, que tem como foco abordar mais alguns comandos de gerenciamento de containers e também mostrar o gerenciamento de imagens de containers no Docker. Sendo assim, mãos à obra.

[ Hits: 7.905 ]

Por: Bruno Bueno da Silva em 22/09/2016


Mais comandos de administração



PARTE 1 Docker - Containers em Linux [Artigo]

Uma coisa extremamente importante é como acessar o container.

Digo isso do ponto de vista da aplicação. Até o momento, instalamos o Docker aprendemos a subir container parar container, entre outros comandos. Porém, um comando muito importante ficou pendente, como por exemplo, instalamos um Apache dentro de um container. Como acessar o Apache desse container?

Para isso utilizaremos um parâmetro muito útil no gerenciamento de containers, que é o parâmetro "-p" (publish). Esse parâmetro faz com que você consiga "bindar" a porta do seu DockerHost com a porta do seu container. Caso não tenha ficado muito claro, vamos à prática para facilitar o entendimento.

Primeiro, rode um container;

# docker run -ti debian

Após o comando, muito provavelmente você já vai estar dentro do container no seu terminal e vai ter algo parecido com:

root@30b05a28c14e:/#

Agora, dentro do container, instale o Apache;

root@30b05a28c14e:/# apt-get install apache2

Inicie o serviço;

root@30b05a28c14e:/# /etc/init.d/apache2 start

Até o momento, caso você tenha efetuado o teste de colocar o IP do container no navegador do seu DockerHost, você viu que de fato o Apache está funcionando no seu container. Porém, caso você tenha tentado acessar o Apache que está rodando no seu container através de outro host, muito provável que nem pingar no container você consiga.

Isso acontece, pois ainda não definimos em qual porta o container deve escutar. Rode o comando docker ps e veja o status da sua porta:

CONTAINER ID    IMAGE   COMMAND      CREATED            STATUS    PORTS        NAMES
30b05a28c14e    debian  "/bin/bash"  About an hour ago  Up        42 seconds   insane_chandrasekhar

Veja que não existe configuração alguma para as portas do container.

Porém, a forma (por enquanto) de acessar um container é através do IP do DockerHost, sendo assim, temos que fazer um redirecionamento de portas, de forma que se você acessar o IP do DockerHost em uma porta especifica, será redirecionado automaticamente ao container. Por sorte, como tudo no Docker, isso é feito de forma simples, não vamos precisar de várias regras de IPtables para isso; toda essa parte "burocrática", o Docker fica encarregado de fazer.

Antes disso, vamos salvar essa imagem de container, pois já instalamos o Apache nela e para facilitar o processo sem ter que subir outro container e ter que reinstalar o Apache, vamos salvar essa imagem para continuar de onde paramos.

Para isso, vamos utilizar o commit, que é um comando do Docker que serve para salvar uma imagem:

# docker commit -m "lab de container" 30b05a28c14e apache_lab:1.0

Após rodar esse comando, rode o comando:

# docker images
REPOSITORY         TAG      IMAGE ID       CREATED            SIZE
apache_lab         1.0      b994948dbab5   About an hour ago  193.9 MB
debian             latest   1b01529cc499   4 weeks ago        125.1 MB
graylog2/allinone  latest   37344ed703dc   5 months ago       870.3 MB

Veja que foi gerada uma imagem baseada no container que criamos com a imagem do Debian, porém, essa imagem já vem com o Apache instalado, pois já fizemos isso.

A pergunta é: qual a vantagem em fazer isso? A vantagem é que ao iniciar um outro container baseado nessa imagem "comitada", não vamos ter que reinstalar o Apache, o que torna o processo mais rápido,. Economizar tempo hoje em dia, a meu ver, é muito bom.

Agora, pense que você precisa sempre estar testando um cenário especifico, toda vez é a mesma coisa, com containers você pode continuar da onde parou, o que dependendo do cenário, o ganho de tempo é gigantesco. Vamos iniciar um container baseado nessa imagem que acabamos de efetuar um "commit":

# docker run -ti -p 8081:80 apache_lab:1.0

Obviamente, o serviço do apache desse container vai estar parado, então, inicie o serviço:

root@7155da1ddf08:/# /etc/init.d/apache2 start

Bom, agora saia do container sem matar ele e após, o seu terminal estar no DockerHost, rode o comando abaixo:

# docker ps
CONTAINER ID     IMAGE             COMMAND      CREATED      STATUS         PORTS                 NAMES
7155da1ddf08     apache_lab:1.0    "/bin/bash"  2 days ago   Up 5 minutes   0.0.0.0:8081->80/tcp  thirsty_noether

Agora, veja a diferença entre essa saída do docker ps baseado com a última vez que executamos o comando. Observe a coluna "PORTS". Agora sim, nosso container está acessível. Ele possui uma porta onde ele fica escutando o tempo todo.

Para validar o teste, jogue no seu navegador o ip-do-seu-DockerHost:8081 e veja que vai abrir a tela inicial do Apache. Para que possa ficar mais fácil de entender, detalhando o último comando que executamos para subir esse container:
  • doker run -ti → Inicia um container com um terminal interativo.
  • -p 8081:80 → -p "publisher" faz com que você consigar "bindar" a porta do seu DockerHost com a porta do Container, lembrando que a lógica é 8081: Porta do DockerHost, 80 porta do container. Como o exemplo anterior mostra, ao bater na porta do DockerHost na porta 8081 você será redirecionado para a porta 80 do container em questão.
  • apache_lab:1.0 → Nome da imagem que efetuamos um "commit".

Bom, agora com esse exemplo, não preciso ficar batendo muito nessa tecla, suba seus labs com os serviços, ou aplicação em container, e vá migrando seus labs aos poucos para o Docker. Conforme você vai utilizando, mais prática vai pegando e cada vez mais o seu dia-a-dia vai se tornando mais dinâmico no que se refere a labs e compartilhar cenário com outros colaboradores, enfim...

Uma dica que eu recomendo, é fazer o seu lab em VM? Ok, agora tente refazer ele em container.

Após finalizado, reinicie o procedimento do zero e veja na prática onde está a vantagem.

Sendo assim, podemos começar a brincar mais com o gerenciamento de imagens, no Docker. Para isso, devemos iniciar com uma pergunta...

    Próxima página

Páginas do artigo
   1. Mais comandos de administração
   2. O que é um Docker Hub
Outros artigos deste autor

Docker - Containers em Linux

Utilizando criptografia LUKS em discos externos

Leitura recomendada

Crimpagem de Conectores RJ-45

IPv6 completo Net Virtua

AWS - VPN IPSEC com Libreswan

Site Survey Plan

Testando velocidade entre equipamentos Ubiquiti

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts