DEV Community

Henrique Weiand
Henrique Weiand

Posted on • Updated on

Docker II: 5 tópicos para iniciar o mais rápido possível

Hello Dev! Hoje continuamos mais uma parte da série de posts sobre Docker e de como iniciar a utilização dele o mais rápido possível!

Primeiro Post: Docker — 5 tópicos para iniciar o mais rápido possível

Vou trazer alguns conceitos e comandos mais complexos então novamente o primeiro post é essencial para não pegar o bonde andando do nosso aprendizado, então chega de bla bla bla e vamos ao conteúdo

Mais truques, mais comandos

Anteriormente aprendemos o ABC dos comandos, que são:

docker run -it ubuntu bash

docker ps -a

docker stop CODIGO_DO_CONTAINER_OU_NOME

docker start CODIGO_DO_CONTAINER_OU_NOME

docker rm CODIGO_DO_CONTAINER_OU_NOME
Enter fullscreen mode Exit fullscreen mode

Deixei os comandos acima conforme exemplos vistos anteriormente

Agora que já sabemos subir uma maquina, precisamos entender de como colocar algum material lá dentro funcional, certo?

Subindo container dando nome aos bois, abrir portas e mapeando pastas

docker run -it --name teste -v /Users/henriqueweiand/Documents/meu_codigo:/var/www/html -p 8080:80 ubuntu:18.04 bash
Enter fullscreen mode Exit fullscreen mode

Parte desse comando já conhecemos, então vamos la

*run *= Comando para inicializar

*-it *= É a maneira que informamos para essa inicialização que queremos ter acesso ao terminal porem lá de dentro do container assim que ele subir

— name = Define um nome especifico ao container (isso evita que o próprio docker crie um nome automaticamente)

-v /Users/henriqueweiand/Documents/meu_codigo:/var/www/html *= Essa parte é um pouco mais complicada de se compreender de largada, mas vamos la. Aqui estamos mapeando a pasta de meu diretório */Users/henriqueweiand/Documents/meu_codigo *que terá todo o conteúdo la do meu container da pasta */var/www/html, *isso quer dizer que todos os arquivos desse diretório interno e externo estão sincronizados, então poderemos editar em um e ver o resultado interno. Ok? Caso vocês não compreendam, eu faço um detalhamento posterior. Aaaahh uma coisa apenas, troque o endereço */Users/henriqueweiand/Documents/meu_codigo por um endereço de sua maquina de sua preferencia.

-p 8080:80 = Mapeamento das portas que serão abertas do container para fora

ubuntu:18.04 = Nome da imagem do DockerHub com especificação de tag (versão do ubuntu nesse caso)

*bash *= O que queremos utilizar dentro da maquina assim que à acessarmos (Faz ligação com o -it)

Vou executar com vocês para observarmos juntos a mágica acontecer

Ok, nada de mais, certo? Errado! kkkk

Vamos deixar esse terminal quietinho ai e abrir um novo onde vamos rodar o nosso bom e velho

docker ps -a
Enter fullscreen mode Exit fullscreen mode

Veja no terminal acima que agora as coisas estão diferentes, veja que temos um name definido conforme informamos no comando (teste) e ali em **PORTS **tem um valor curioso: 0.0.0.0:80 -> 8080/tcp isso nada mais é que estamos abrindo uma porta do container para o mundo exterior. Essa porta esta respondendo dentro do container como 80 e no externo como 8080.

Então posso abrir um site com localhost:8080? Pode, vamos lá!

Visssh pessoal, parece que não deu certo :(

Ok, brincadeiras a parte, nada aconteceu porque não temos nada rodando no nosso ubuntu (zeradinho) para expor algo na 80 e mostrar externamente na 8080 no nosso browser.

E o que precisamos fazer?

Sabe aquele terminal ali que rodamos o primeiro comando que subiu a maquina? aquele que estamos dentro do container? Vamos rodar ali o seguinte comando:

apt-get update && apt-get upgrade -y
Enter fullscreen mode Exit fullscreen mode

Depois

apt-get install -y apache2
Enter fullscreen mode Exit fullscreen mode

E depois

/usr/sbin/apache2ctl -D FOREGROUND
Enter fullscreen mode Exit fullscreen mode

Entendo o que fizemos nos comandos acima

Atualizamos o sistema no geral, instalamos o apache2 e colocamos ele a rodar, com isso pode acessar agora seu navegador no endereço http://localhost:8080/ e veja que lindo!

Fechouu galera!!! temos alguma coisa mais palpável não é?

Ok, se voce quer editar a página default do apache abra o seu diretório que você deixou la no comando **-v **e veja que existe um **index.html, **abra e edite ele, depois volte no navegador la na localhost:8080 e de um refresh

E lembrando, tudo que editar ali dentro daquela pasta ira cair laaaa no container na pasta /var/www/html conforme também colocamos no comando -v

Criando containers com auto destruição automática

Por fim e apenas como complemento desse post, um ultimo comando.

Um detalhe eu fechei todos os terminais aberto e exclui os containers que eu tinha rodando criados anteriormente:

Vamos rodar o mesmo comando que aprendemos recentemente porem adicionarmos um novo parâmetro

docker run -it --rm --name teste -p 8080:80 ubuntu:18.04 bash
Enter fullscreen mode Exit fullscreen mode

Oque faz o comando "— rm"?

Ele vai auto destruir a maquina se eu sair do terminal bash de dentro do container!! Mágico não?

Mas para que serve isso exatamente?

Pense que cada docker run que sobe uma maquina ela fica la listada no docker ps -a e ocupando um espaço sendo que talvez você nem a use mais, sendo necessário parar ela e remover com os comandos do primeiro post. Com a utilização do — rm essa container ira ser excluido assim que você sair do bash do container. Deu pra pegar?

E fim :)

Bom Dev! Digo que o conteúdo visto hoje é bem importante saber pois trouxe um pouco das principais coisas do mundo docker do ABC. Novamente espero que tenham gostado e ainda temos mais algumas posts saindo do forno para os próximos dias, então aguardem!!

Primeiro Post: Docker — 5 tópicos para iniciar o mais rápido possível

Top comments (0)