Escolar Documentos
Profissional Documentos
Cultura Documentos
O docker em si possui uma estrutura de dados voláteis, pois as camadas que compõem
a aplicação por baixo são apenas de ready-only. Toda alteraçõa que é realizada no
docker advém da camada de read/write(leitura e escrita)
que é a camada de execução do container.
![a](imagens/persistencia-dados.png)
Todos esses dados precisam ser salvos fora do ciclo de execução do container já que
todos os dados mantidos em um container são aqueles que estão na camada de somente
leitura.
A ideia de armazenar os dados fora dos containers em execução é para que a pasta
`/var/lib/docker/container` não acabe por crescer por conta da quantidade de dados
armazenados ali.
O principal objetivo é fazer esses dados serem mapeados para fora do container e
para isso nós temos alguams opções que veremos a seguir. Essas três opções são:
- Bind Mount
- Volume
- ON RAM
Podemos também mapear múltiplas pastas. Basta repetir o mesmo comando com a nova
pasta desejada
```
docker run -itd --name meucontainer -p 9090:80 -v
caminho_da_pasta_do_host(destino) : caminho_da_pasta_do_container(origem)
minha_imagem
// Múltiplas pastas
docker run -itd --name meucontainer -p 9090:80 -v
caminho_da_pasta_do_host(destino) : caminho_da_pasta_do_container(origem) -v
caminho_da_pasta_do_host(destino) : caminho_da_pasta_do_container(origem)
minha_imagem
```
Diferente do bind mount, o docker volume não mapeia um diretório específico, mas
sim trabalha com o conceito de volumes.
Mas, igualmente o bind mount, ela o mapeamento desse volume entre o hospedeiro e o
container. Esse mapeamento é feito diretamente pelo Docker e não diretamente no
host
Ele é usado em produção
Eles são mais seguros, porém são menos simples. Eles não sobrescrevem os arquivos e
diretórios como no bind mount.
Eu consigo criar criptografia de conteúdos(aqui é possível também o uso de plugins
drives como: local, NFS, CIES, Cluster, SSHFS,...
Conseguimos também manipular os dados via Docker CLI e compartilhar hosts remotos.
Para utilizar um volume precisamos criar ele com o comando: `docker volume create
nome_do_volume`
```docker
docker run -d --name apache_volume_web -p 9091:80 -v
volume-apache-web:/usr/local/apache2/htdocs httpd
```
P.S: Eu também consigo usar o volume aliado a um mapeamento do tipo bind mount
### ON RAM(TMPFS)
Para realizar esse tipo de tarefa, basta passarmos a flag --tmpfs e a pasta que
vamos mapear em memória principal.