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.920 ]

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

Utilizando criptografia LUKS em discos externos

Docker - Containers em Linux

Leitura recomendada

DHCP e VLANs no CentOS 6.5 - Instalação e configuração

IPv6, DNSv6 e DHCPv6

Implementando Servidor NTP no Debian

A ferramenta Nagios aplicada a IPv6

AWS - VPN IPSEC com Libreswan

  
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