Montando Volumes no Docker
Entenda um pouco sobre como o Docker trabalha com volumes, identifique os pontos positivos e negativos dessa abordagem e veja como é possível criar um compartilhamento de volumes entre os containers.
Gerenciando volumes
Um volume nada mais é do que um diretório compartilhado entre o host e o container ou entre um ou mais containers, para este volume não há as mesmas restrições ou opções de limitação do LXC, pois não há manipulação dele pela libcontainer (biblioteca responsável pelas filtragens nas chamadas de sistema). Os volumes fornecem vários recursos úteis para persistência ou compartilhamento de dados:
Existem basicamente duas formas de se montar um volume no Docker:
Cada uma das opções tem seus benefícios e desafios, entenda abaixo um pouco sobre cada uma.
Contras:
Contras:
Veja na próxima pagina como pode ser criado e montado um volume dentro de um container Docker.
- Os volumes são inicializados quando um container é criado. Se a imagem base do container contém dados no ponto de montagem especificado, esses serão sobrescritos pelo novo ponto de montagem (igual ao que acontece nos sistemas padrões atualmente);
- Volumes de dados podem ser compartilhados e reutilizados entre os containers;
- Alterações em um volume são feitos diretamente, sem manipulação pela libcontainer;
- Alterações em um volume não serão incluídos na imagem utilizada;
- Os dados contidos no volume não são apagados quando o container é removido;
Existem basicamente duas formas de se montar um volume no Docker:
- Montagem host-container
- Montagem entre containers
Cada uma das opções tem seus benefícios e desafios, entenda abaixo um pouco sobre cada uma.
1. Montagem host-container
Prós:- Menor overhead para acesso disco, pois não há analise pela libcontainer das chamadas para esse volume mapeado;
- É possível mapear o mesmo volume para múltiplos containers, forma primitiva de replicação de dados entre containers (lembrando que neste caso não há controle de arquivos lidos e escritos ao mesmo tempo, quem deve ser responsável por isso é o filesystem do volume, não o volume em si);
- Persistência de dados, não há risco do container cair ou ser removido e os dados desaparecerem;
Contras:
- Sucessível possíveis brechas de segurança a nível de filesystem, escalonamento de privilégios, pois neste ambiente não há controle pela libcontainer;
- Não escalável, pois atrela-se o container ao host ou pelo menos ao mapeamento;
- Dificulta administração, pois há mais uma camada de gerenciamento que deve ser muito bem estruturada;
2. Montagem entre containers
Prós:- Portável, pois o volume não está mais atrelado ao host;
- É possível mapear o mesmo volume para múltiplos containers, forma primitiva de replicação de dados entre containers (lembrando que neste caso não há controle de arquivos lidos e escritos ao mesmo tempo, quem deve ser responsável por isso é o filesystem do volume, não o volume em si);
- Persistência de dados, não há risco do container cair ou ser removido e os dados desaparecerem;
Contras:
- Maior overhead para acesso disco, pois há analise pela libcontainer das chamadas para esse volume mapeado;
- Maior complexidade, pois há mais passos a serem seguidos para criação e remoção de containers;
Veja na próxima pagina como pode ser criado e montado um volume dentro de um container Docker.
Objetivo e claro na explicação, ótimo artigo!