Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

280
Vistas
cómo guardar un contenedor docker redis

Tengo problemas para crear una imagen de un contenedor docker redis con los datos en la base de datos redis. En este momento estoy haciendo esto:

 docker pull redis docker run --name my-redis -p 6379:6379 -d redis redis-cli 127.0.0.1:6379> set hello world OK 127.0.0.1:6379> save OK 127.0.0.1:6379> exit docker stop my-redis docker commit my-redis redis_with_data docker run --name my-redis2 -p 6379:6379 -d redis_with_data redis-cli 127.0.0.1:6379> keys * (empty list or set)

Obviamente no estoy entendiendo algo bastante básico aquí. ¿Docker no se compromete a crear una nueva imagen a partir de un contenedor existente?


Bien, he estado investigando un poco. La imagen redis predeterminada en hub.docker usa un volumen de datos que luego se monta en /data en un contenedor. Para compartir este volumen entre contenedores, debe iniciar un nuevo contenedor con el siguiente argumento:

 docker run -d --volumes-from <name-of-container-you-want-the-data-from> \ --name <new-container-name> -p 6379:6379 redis

Tenga en cuenta que el orden de los argumentos es importante; de lo contrario, la ejecución de la ventana acoplable fallará en silencio.

 docker volume ls

le dirá qué volúmenes de datos ya ha creado Docker en su computadora. Todavía no he encontrado una manera de dar a estos volúmenes un nombre trivial, en lugar de una larga cadena aleatoria.

Tampoco he encontrado una forma de montar un volumen de datos, sino que simplemente uso el comando --volumes-from .


Bueno. Ahora lo tengo funcionando, pero es torpe.

Con

 docker volume ls docker volume inspect <id of docker volume>

puede encontrar la ruta del volumen de la ventana acoplable en el sistema de archivos local. Luego puede montar esto en un nuevo contenedor de la siguiente manera:

 docker run -d -v /var/lib/docker/volumes/<some incredibly long string>/_data:/data \ --name my-redis2 -p 6379:6379 redis

Obviamente, esta no es la forma en que debes hacer esto. Seguiré cavando.


Pongo todo lo que he descubierto hasta ahora en una publicación de blog: mi publicación de blog en medium.com

Tal vez eso le sirva a alguien

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Los datos en la ventana acoplable no son persistentes, cuando reinicia el contenedor, sus datos desaparecerán. Para evitar esto, debe compartir un mapa en la máquina host con su contenedor. Cuando su contenedor se reinicie, obtendrá los datos del mapa en el host.

Puede leer más al respecto en los documentos de Docker: https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes

De los documentos del contenedor redis:

Ejecutar redis-servidor

 docker run -d --name redis -p 6379:6379 dockerfile/redis

Ejecute redis-server con directorio de datos persistentes. (crea dump.rdb)

 docker run -d -p 6379:6379 -v <data-dir>:/data --name redis dockerfile/redis

Ejecute redis-server con directorio de datos y contraseña persistentes.

 docker run -d -p 6379:6379 -v <data-dir>:/data --name redis dockerfile/redis redis-server /etc/redis/redis.conf --requirepass <password>

Fuente: https://github.com/dockerfile/redis

about 4 years ago · Santiago Trujillo Denunciar

0

Usar el volumen de datos y compartir el archivo RDB manualmente no es feo, en realidad para eso está diseñado el volumen de datos, para separar los datos del contenedor.

Pero si realmente necesita/quiere guardar datos en una imagen y compartirlos de esa manera, simplemente puede cambiar el directorio de trabajo de redis de volumen /data a otro lugar:

  • La opción 1 está cambiando --dir cuando se inicia el contenedor redis:

     docker run -d redis --dir /tmp

    Luego puede seguir sus pasos para crear una nueva imagen. Tenga en cuenta que este método solo puede usar /tmp debido a un problema de permisos.

  • La opción 2 es crear una nueva imagen con WORKDIR cambiado:

     FROM redis RUN mkdir /opt/redis && chown redis:redis /opt/redis WORKDIR /opt/redis

    Luego docker build -t redis-new-image y usa esta imagen para hacer tu trabajo.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda