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

476
Vistas
¿Cómo recuperar el archivo del contenedor docker?

Tengo un Dockerfile simple que crea un archivo zip y estoy tratando de recuperar el archivo zip una vez que esté listo. Mi Dockerfile se ve así:

 FROM ubuntu RUN apt-get update && apt-get install -y build-essentials gcc ENTRYPOINT ["zip","-r","-9"] CMD ["/lib64.zip", "/lib64"]

Después de leer los documentos, me parece que algo como esto debería funcionar, pero no puedo hacer que funcione.

 docker build -t ubuntu-libs . docker run -d --name ubuntu-libs --mount source=$(pwd)/,target=/lib64.zip ubuntu-libs

Otra pregunta secundaria: ¿es posible cambiar el nombre del archivo zip desde la línea de comando?

Editar:

Esto es diferente a la pregunta duplicada mencionada en los comentarios porque mientras usan cp para copiar archivos desde un contenedor Docker en ejecución, intento montar un directorio en la creación de instancias.

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

0

Hay varias maneras de hacer esto.

Usando la ventana acoplable cp:

 docker cp <container_hash>:/path/to/zip/file.zip /path/on/host/new_name.zip

Usando volúmenes acoplables:

Como indicaba en su pregunta, también puede montar una ruta desde el contenedor hasta su host. Puede hacer esto especificando en qué parte del host desea que esté el punto de montaje o no especifique dónde está el punto de montaje y deje que Docker elija. Ambos caminos requieren enfoques diferentes.

Deje que Docker elija la ubicación de montaje del host

 docker volume create random_volume_name docker run -d --name ubuntu-libs -v random_volume_name:<path/to/mount/in/container> ubuntu-libs

El contenido se ubicará en su host, aquí:

 ls -l /var/lib/docker/volumes/random_volume_name/_data/

Déjame elegir la ubicación de montaje del host

 docker run -d --name ubuntu-libs -v <existing/mount/point/on/host>:<path/to/mount/in/container> ubuntu-libs

Esto crea una ubicación limpia/vacía que se comparte según las ubicaciones definidas en el comando. Ahora necesita modificar su Dockerfile para copiar los artefactos a esta ruta, algo como:

 FROM ubuntu RUN apt-get update && apt-get install -y build-essentials gcc ENTRYPOINT ["zip","-r","-9"] CMD ["sh", "-c", "/lib64.zip", "/lib64", "cp", "path/to/zip/file.zip", "<path/to/mount/in/container>"]

El contenido ahora se ubicará en su host, aquí:

 ls -l <existing/mount/point/on/host>

Tengo que saludar a @joaofnfernandes desde aquí , que hace un gran trabajo explicando.

over 4 years ago · Santiago Trujillo Denunciar

0

Como comentó @ flagg19, debe vincular un directorio a un directorio. Puede crear directorios dentro del contenedor y puede anular los argumentos RUN . Hacer ambas cosas más agregar type=bind conduce a un gran éxito:

 docker run -d --rm --mount type=bind,source="$(pwd)",target=/out ubuntu-libs /out/lib64.zip /lib64

O, por supuesto, podría cambiar el comando EJECUTAR de RUN para escribir en /out/lib64.zip en lugar de /lib64.zip :

 FROM ubuntu RUN apt-get update && apt-get install -y build-essentials gcc && mkdir /out ENTRYPOINT ["zip","-r","-9"] CMD ["/out/lib64.zip", "/lib64"]
 docker run -d --rm --mount type=bind,source="$(pwd)",target=/out ubuntu-libs

De cualquier manera, recomiendo agregar --rm y deshacerse de --name . No es necesario quedarse con el recipiente después de que esté listo.

over 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