pick-linuxtips

Indice - Day-4

1 - O que são Volumes e seus tipos

Volumes são diretórios externos ao container, que são montados diretamente nele, e dessa forma bypassam seu filesystem, ou seja, não seguem o padrão de camadas.

Particularidades:

Tipos

Referência

2 - Criando volume do tipo Bind

Com o bind, um arquivo ou diretório do host é montado para um container.

Qual flag escolher? -v ou --mount?

## Flag --mount
docker run -ti --name testando-volumes --mount type=bind,src="/home/seu-user/giropops-senhas",target=/giropops-senhas debian

## Volume read-only - ro
docker run -ti --name testando-volumes --mount type=bind,src="/home/seu-user/giropops-senhas",target=/giropops-senhas,ro debian 

Onde

Referência

3 - Gerenciando volumes do tipo Volume

É possível fazer a criação de volumes que serão consumidos por outros containers

Pode-se criar volumes isolados de containers.

No Linux, por padrão eles ficam em /var/lib/docker/volumes - mas cabe verificar com o comando *inspect*

## Listar os volumes criados
docker volume ls

## Criar um volume
docker volume create [nome_do_volume]

docker volume create giropops

## Inspecionar
docker volume inspect [nome_do_volume]

docker volume inspect [nome_do_volume]

## Montar o volume
docker run -ti --name testando-volumes3 --mount type=volume,src=giropops,target=/giropops debian

## Remover volume
docker volume rm [nome_do_volume]

## Remover volumes não usados
docker volume prune

Referência

4 - Outras formas de montar volumes e storage drivers

Usando a flag -v

docker container run -d --name container-teste -v volume-teste:/usr/share/nginx/html -p 8080:80 nginx### Exemplo

### Exemplo
docker run -d --name web-1 -v giropops:/usr/share/nginx/html -p 8080:80 nginx

## Readonly
docker container run -d --name container-teste -v volume-teste:/usr/share/nginx/html:ro -p 8080:80 nginx

### Exemplo
docker container run -d --name web-2 -v giropops:/usr/share/nginx/html:ro -p 8090:80 nginx

Storage drivers

O Docker usa Storage Drivers para armazenar camadas de imagem e dados na camada gravável de um container.

Como os drivers podem ter desempenho inferior em gravações intensivas, especialmente em sistemas de copy-on-write, aplicações como bancos de dados sofrem impacto.

Por isso, para dados persistentes, de alta escrita ou compartilhados entre containers, a prática recomendada é usar volumes Docker.

Referência

5 - Criando volume do tipo tmpfs

O tmpfs é um volume temporário que persiste apenas na memória do host.

## Usando a flag mount
docker container run -d --name container-teste --mount type=tmpfs,target=/app -p 8080:80 nginx

## Exemplo
docker run -d --name web-1 --mount type=tmpfs,target=/strigus -p 8080:80 nginx 

Referência