1
resposta

[Dúvida] DevOps: construindo e gerindo containers com docker

Bom dia!

Tenho uma dúvida sobre como funciona a persistência no Docker, vendo a aula aprendi como manter os dados criados dentro do container usando volumes e tmpfs, mas durante um dos exercícios tive uma dúvida:

Criei um novo volume e depois criei um novo container Ubuntu de acordo com que o exercício pediu.

Usei o comando docker run -it -v novo-vol-exec:/app ubuntu bash, criei um arquivo dentro do diretório /app e dei Exit para testar a persistência. Beleza, voltei no container e o arquivo estava lá novamente. Mas daí fiz outro teste, mandei o comando como docker run -it -v novo-vol-exec:/novo-exec ubuntu bash, e quando entrei no diretório /novo-exec o arquivo que criei antes ainda estava lá... mas não entendi porquê já que é um diretório diferente.

Então queria entender como funciona na verdade o comando e a persistência: porque o arquivo se manteve? o comando define apenas um diretório a ser mantido? Se defini um novo diretório que não existia antes, porque o arquivo continou para o próximo container que criei?

Obrigado!

1 resposta

Olá, Guilherme. Tudo bem?

Quando você cria um volume no Docker, ele é um espaço de armazenamento gerenciado pelo Docker que existe independentemente dos containers. Isso significa que o volume é persistente e não está vinculado a um único container.

No seu exemplo, você criou um volume chamado novo-vol-exec. Quando você executa o comando docker run -it -v novo-vol-exec:/app ubuntu bash, você está montando esse volume no diretório /app do container. Qualquer arquivo que você criar dentro de /app será armazenado no volume novo-vol-exec.

Agora, quando você executa o comando docker run -it -v novo-vol-exec:/novo-exec ubuntu bash, o mesmo volume novo-vol-exec está sendo montado, mas agora no diretório /novo-exec do novo container. Como o volume é o mesmo, todos os dados que estavam no volume (incluindo o arquivo que você criou anteriormente) ainda estarão disponíveis, independentemente do ponto de montagem dentro do container.

Portanto, a persistência dos dados está associada ao volume em si, e não ao diretório específico dentro do container. O diretório que você especifica no comando -v é apenas o ponto de montagem dentro do container, mas o conteúdo do volume permanece o mesmo.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!