Docker - Armazenamento
Drivers de armazenamento
O Docker tem vários drivers de armazenamento que permitem trabalhar com os dispositivos de armazenamento subjacentes. A tabela a seguir mostra os diferentes drivers de armazenamento junto com a tecnologia usada para os drivers de armazenamento.
Tecnologia | Driver de armazenamento |
---|---|
OverlayFS | overlay ou overlay2 |
AUFS | aufs |
Btrfs | brtfs |
Gerenciador de Dispositivos | gerenciador de Dispositivos |
VFS | vfs |
ZFS | zfs |
Vamos agora discutir alguns dos casos em que você usaria os vários drivers de armazenamento -
AUFS
Este é um driver estável; pode ser usado para aplicativos prontos para produção.
Ele tem bom uso de memória e é bom para garantir uma experiência do Docker suave para contêineres.
Há uma atividade de alta gravação associada a este driver que deve ser considerada.
É bom para sistemas que são do tipo Plataforma como serviço.
Devicemapper
Este é um driver estável; garante uma experiência suave do Docker.
Este driver é bom para testar aplicativos em laboratório.
Este driver está alinhado com a principal funcionalidade do kernel Linux.
Btrfs
Este driver está alinhado com a principal funcionalidade do kernel Linux.
Há uma atividade de alta gravação associada a este driver que deve ser considerada.
Este driver é bom para instâncias em que você mantém vários pools de construção.
Ovelay
Este é um driver estável e está alinhado com a principal funcionalidade do kernel Linux.
Ele tem um bom uso de memória.
Este driver é bom para testar aplicativos em laboratório.
ZFS
Este é um driver estável e é bom para testar aplicativos em laboratório.
É bom para sistemas que são do tipo plataforma como serviço.
Para ver o driver de armazenamento sendo usado, emita o docker info comando.
Sintaxe
docker info
Opções
Nenhum
Valor de retorno
O comando fornecerá todas as informações relativas ao componente Docker instalado no Docker Host.
Exemplo
sudo docker info
Resultado
A saída a seguir mostra que o principal driver usado é o aufs driver e que o diretório raiz está armazenado em /var/lib/docker/aufs.
Volumes de dados
No Docker, você tem um volume separado que pode ser compartilhado entre contêineres. Estes são conhecidos comodata volumes. Algumas das características do volume de dados são -
- Eles são inicializados quando o contêiner é criado.
- Eles podem ser compartilhados e também reutilizados entre muitos contêineres.
- Quaisquer alterações no próprio volume podem ser feitas diretamente.
- Eles existem mesmo depois que o contêiner é excluído.
Vejamos nosso contêiner Jenkins. Vamos fazer umdocker inspectpara ver os detalhes desta imagem. Podemos emitir o seguinte comando para escrever a saída dodocker inspect comando para um arquivo de texto e, em seguida, visualize o arquivo de acordo.
sudo docker inspect Jenkins > tmp.txt
Quando você visualiza o arquivo de texto usando o more command, você verá uma entrada como JENKINS_HOME=/var/Jenkins_home.
Esse é o mapeamento feito dentro do contêiner por meio da imagem do Jenkins.
Agora, suponha que você queira mapear o volume no contêiner para um volume local, então você precisa especificar a opção –v ao iniciar o contêiner. Um exemplo é mostrado abaixo -
sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
A opção –v é usada para mapear o volume no contêiner que é /var/jenkins_home para um local em nosso Docker Host que é /home/demo.
Agora, se você for ao /home/demo local em seu Docker Host após iniciar seu contêiner, você verá todos os arquivos de contêiner presentes lá.
Alteração do driver de armazenamento de um contêiner
Se quiser mudar para o driver de armazenamento usado para um contêiner, você pode fazer isso ao iniciar o contêiner. Isso pode ser feito usando o–volume-driver parâmetro ao usar o docker runcomando. Um exemplo é dado abaixo -
sudo docker run –d --volume-driver=flocker
–v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
o –volume-driver opção é usada para especificar outro driver de armazenamento para o contêiner.
Para confirmar que o driver foi alterado, primeiro vamos usar o docker pscomando para ver os contêineres em execução e obter o ID do contêiner. Então, emita o seguinte comando primeiro -
sudo docker ps
Em seguida, emita um docker inspect no contêiner e coloque a saída em um arquivo de texto usando o comando.
sudo docker inspect 9bffb1bfebee > temp.txt
Se você navegar pelo arquivo de texto e ir para a linha que diz VolumeDriver, você verá que o nome do driver foi alterado.
Criando um Volume
Um volume pode ser criado com antecedência usando o dockercomando. Vamos aprender mais sobre este comando.
Sintaxe
docker volume create –-name=volumename –-opt options
Opções
name - Este é o nome do volume que precisa ser criado.
opt - Estas são as opções que você pode fornecer ao criar o volume.
Valor de retorno
O comando produzirá o nome do volume criado.
Exemplo
sudo docker volume create –-name = demo –opt o = size = 100m
No comando acima, estamos criando um volume de tamanho 100 MB e com um nome demo.
Resultado
A saída do comando acima é mostrada abaixo -
Listando todos os volumes
Você também pode listar todos os docker volumes com um docker host. Mais detalhes sobre este comando são fornecidos abaixo -
Sintaxe
docker volume ls
Opções
Nenhum
Valor de retorno
O comando produzirá todos os volumes no docker host.
Exemplo
sudo docker volume ls
Resultado
A saída do comando acima é mostrada abaixo -