Docker II: 5 tópicos para iniciar o mais rápido possível
Tags: docker, dockerfile, dockercomposer
Published: 2023-10-08 17:09:21


![](https://cdn-images-1.medium.com/max/3120/1*3DDeA9eDozIZ4Zeq4NNR0A.png)

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](https://dev.to/henriqueweiand/docker-5-topicos-para-iniciar-o-mais-rapido-possivel-52gn)**

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

*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

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 ](https://hub.docker.com/_/ubuntu?tab=tags)(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

![](https://cdn-images-1.medium.com/max/2000/1*yeIvSUiNMu0UptR7BifHfg.png)

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

![](https://cdn-images-1.medium.com/max/2000/1*2Moy-qPQMt2RQ8eauB7Rcg.png)

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á!

![](https://cdn-images-1.medium.com/max/2000/1*sdyVwIPTn0lodaz1HxdgBg.png)

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

Depois

    apt-get install -y apache2

E depois

    /usr/sbin/apache2ctl -D FOREGROUND

**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/](http://localhost:8080/) e veja que lindo!

![](https://cdn-images-1.medium.com/max/2000/1*gyB0Z726-gwj8RMBKZydew.png)

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

![](https://cdn-images-1.medium.com/max/2000/1*q8xVjES3uoz26z1VuSVYLw.gif)

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

![](https://cdn-images-1.medium.com/max/2000/1*YNxUy3IV1NbjTzxpMBbgxA.png)

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:

![](https://cdn-images-1.medium.com/max/2000/1*rcgF4BAE_sCHWnt7xlXctA.png)

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

**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](https://dev.to/henriqueweiand/docker-5-topicos-para-iniciar-o-mais-rapido-possivel-52gn)**

![](https://cdn-images-1.medium.com/max/2000/1*R0VzCiB6XurdJR1NM4xXNQ.gif)