Remover um contêiner e seus volumes anônimos
Nesta etapa, você aprenderá como remover um contêiner e seus volumes anônimos associados. Ao criar um contêiner, o Docker pode criar volumes para armazenar dados. Volumes anônimos são volumes que não são explicitamente nomeados quando criados. Eles são tipicamente criados quando uma instrução VOLUME está presente no Dockerfile da imagem.
Vamos executar um contêiner que cria um volume anônimo. Usaremos a imagem ubuntu novamente e especificaremos um ponto de montagem de volume usando a flag -v sem um nome antes dos dois pontos.
docker run -d -v /data ubuntu sleep infinity
Este comando cria um contêiner e um volume anônimo montado em /data dentro do contêiner. Você deve ver o ID do contêiner impresso.
<container_id>
Agora, vamos inspecionar o contêiner para ver o volume que foi criado. Substitua <container_id> pelo ID real do seu contêiner em execução.
docker inspect <container_id>
A saída de docker inspect é um grande objeto JSON. Procure a seção "Mounts". Você deve ver uma entrada para o volume montado em /data, e o campo "Name" será uma string longa, gerada aleatoriamente, indicando que é um volume anônimo.
...
"Mounts": [
{
"Type": "volume",
"Source": "<volume_name>",
"Target": "/data",
"Consistency": "consistent",
"BindOptions": null,
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
Você também pode listar todos os volumes usando docker volume ls. Você deve ver o volume anônimo listado.
docker volume ls
A saída incluirá o volume anônimo com seu nome gerado aleatoriamente.
DRIVER VOLUME NAME
local <volume_name>
Por padrão, ao remover um contêiner, seus volumes anônimos não são removidos. Vamos parar o contêiner primeiro. Substitua <container_id> pelo ID real do seu contêiner em execução.
docker stop <container_id>
Você deve ver o ID do contêiner impresso.
<container_id>
Agora, remova o contêiner parado sem remover seus volumes. Substitua <container_id> pelo ID real do seu contêiner parado.
docker rm <container_id>
Você deve ver o ID do contêiner impresso.
<container_id>
Verifique os volumes novamente usando docker volume ls. O volume anônimo ainda deve estar presente.
docker volume ls
A saída ainda incluirá o volume anônimo.
Agora, vamos criar outro contêiner com um volume anônimo e, em seguida, remover o contêiner e seu volume juntos.
docker run -d -v /data ubuntu sleep infinity
Obtenha o novo ID do contêiner.
<new_container_id>
Pare o novo contêiner. Substitua <new_container_id> pelo ID real.
docker stop <new_container_id>
Você deve ver o ID do contêiner impresso.
<new_container_id>
Agora, remova o contêiner parado e seus volumes anônimos usando a flag -v com docker rm. Substitua <new_container_id> pelo ID real.
docker rm -v <new_container_id>
Você deve ver o ID do contêiner impresso.
<new_container_id>
Verifique os volumes novamente usando docker volume ls. O volume anônimo associado ao contêiner que você acabou de remover agora deve ter sumido. O primeiro volume anônimo que você criou ainda deve estar lá.
docker volume ls
A saída deve mostrar apenas o primeiro volume anônimo que você criou.