Persistência de dados com volumes
Nos ambientes de contêineres, a persistência de informações é essencial para garantir que os dados gerados dentro de um contêiner permaneçam disponíveis mesmo após o encerramento ou reinicialização do contêiner. No Docker, essa persistência é alcançada por meio do uso de volumes.
Vamos dar uma olhada em um exemplo prático de como a persistência funciona usando volumes no Docker. Suponha que tenhamos um contêiner em execução e queremos criar um arquivo dentro dele e garantir que esse arquivo seja persistente, ou seja, que ele permaneça disponível mesmo após o contêiner ser encerrado e reiniciado.
Para isso, primeiro, precisamos acessar o contêiner em execução usando o comando docker exec -it <container_id> bash
. Dentro do contêiner, criamos o arquivo desejado, por exemplo, touch file.log
. Em seguida, verificamos se o arquivo foi criado corretamente usando o comando ls
.
Agora, saímos do contêiner e paramos o contêiner em execução usando o comando docker stop <container_id>
para simular o encerramento do contêiner. Em seguida, iniciamos um novo contêiner, associando-o ao mesmo volume do contêiner anterior usando o parâmetro -v
.
Se tudo estiver configurado corretamente, ao verificar o conteúdo do diretório dentro do novo contêiner usando docker exec -it <new_container_id> ls
, veremos que o arquivo file.log
persistiu e está presente no novo contêiner.
Nota
É importante ressaltar que a persistência de informações nos volumes do Docker é independente da existência do contêiner. Mesmo que o contêiner seja encerrado, reiniciado ou excluído, os dados armazenados nos volumes permanecerão intactos, a menos que explicitamente excluídos.
No entanto, é fundamental lembrar que a persistência de dados nos volumes está diretamente ligada à existência desses volumes. Se um volume for excluído, todos os dados associados a ele também serão perdidos. Portanto, ao trabalhar com volumes no Docker, é importante entender como eles estão sendo usados e garantir que medidas adequadas sejam tomadas para evitar a perda acidental de dados.