Docker 1.9.0 y superior
Usar volumen API
docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command
Esto significa que el patrón de contenedor de solo datos debe abandonarse en favor de los nuevos volúmenes.
En realidad, la API de volumen es solo una mejor manera de lograr lo que era el patrón del contenedor de datos.
Si crea un contenedor con un -v volume_name:/container/fs/path
Docker, creará automáticamente un volumen con nombre para usted que puede:
- Estar en la lista a través de
docker volume ls
- Ser identificado a través de
docker volume inspect volume_name
- Copia de seguridad como un directorio normal
- Copia de seguridad como antes a través de una
--volumes-from
conexión
La nueva API de volumen agrega un comando útil que le permite identificar volúmenes colgantes:
docker volume ls -f dangling=true
Y luego eliminarlo a través de su nombre:
docker volume rm <volume name>
Como @mpugach subraya en los comentarios, puedes deshacerte de todos los volúmenes colgantes con una buena frase:
docker volume rm $(docker volume ls -f dangling=true -q)
# Or using 1.13.x
docker volume prune
Docker 1.8.xy debajo
El enfoque que parece funcionar mejor para la producción es utilizar un contenedor de solo datos .
El contenedor de solo datos se ejecuta en una imagen básica y, en realidad, no hace nada excepto exponer un volumen de datos.
Luego puede ejecutar cualquier otro contenedor para tener acceso a los volúmenes del contenedor de datos:
docker run --volumes-from data-container some-other-container command-to-execute
- Aquí puede obtener una buena imagen de cómo organizar los diferentes contenedores.
- Aquí hay una buena idea de cómo funcionan los volúmenes.
En esta publicación de blog hay una buena descripción del llamado contenedor como patrón de volumen que aclara el punto principal de tener contenedores de datos solamente .
La documentación de Docker tiene ahora la descripción DEFINITIVA del contenedor como patrón de volumen / s .
El siguiente es el procedimiento de copia de seguridad / restauración para Docker 1.8.xy a continuación.
APOYO:
sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
- --rm: retira el contenedor cuando sale
- --volumes-from DATA: adjuntar a los volúmenes compartidos por el contenedor DATA
- -v $ (pwd): / backup: bind monta el directorio actual en el contenedor; para escribir el archivo tar en
- busybox: una imagen pequeña y simple, buena para un mantenimiento rápido
- tar cvf /backup/backup.tar / data: crea un archivo tar sin comprimir de todos los archivos en el directorio / data
RESTAURAR:
# Create a new data container
$ sudo docker run -v /data -name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# Compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt
Aquí hay un buen artículo del excelente Brian Goff que explica por qué es bueno usar la misma imagen para un contenedor y un contenedor de datos.