Você está certo. Como você pode ter vários contêineres com volumes por conta própria, é necessário acompanhar qual volume corresponde a qual contêiner. Como fazer isso depende da sua configuração: Eu uso o nome -data para o contêiner de dados, então é óbvio para qual container uma imagem pertence. Dessa forma, pode ser feito um backup assim:
VOLUME='docker inspect $NAME-data | jq '.[0].Volumes["/path/in/container"]''
tar -C $VOLUME . -czvf $NAME.tar.gz
Agora, basta recriar sua imagem e recriar seu contêiner de dados:
cat $NAME.tar.gz | docker run -name $NAME-data -v /path/in/container \
-i busybox tar -C /path/int/container -xzf -
Então, isso significa que você precisa fazer backup:
- Dockerfile
- volume
- caminho do volume no contêiner
- nome do contêiner ao qual o volume pertence
Atualização: Enquanto isso, criei uma ferramenta para fazer backup de contêineres e seus volumes (contêiner (es)): link e uma imagem de backup que pode criar backups e enviá-los para o s3: link