Saltar al contenido

¿Cómo copiar archivos del host al contenedor Docker?

Solución:

los cp El comando se puede utilizar para copiar archivos.

Un archivo específico se puede copiar al contenedor como:

docker cp foo.txt mycontainer:/foo.txt

Se puede copiar un archivo específico DESDE el contenedor como:

docker cp mycontainer:/foo.txt foo.txt

Para enfatizar, mycontainer es un envase IDENTIFICACIÓN, no un imagen IDENTIFICACIÓN.

Varios archivos contenidos por la carpeta src se puede copiar en el target carpeta usando:

docker cp src/. mycontainer:/target
docker cp mycontainer:/src/. target

Referencia: Docker CLI docs para cp

En las versiones de Docker anteriores a la 1.8, solo era posible copiar archivos de un contenedor al host. No del anfitrión a un contenedor.

  1. Obtenga el nombre del contenedor o la identificación corta del contenedor:

    $ docker ps
    
  2. Obtenga la identificación completa del contenedor:

    $ docker inspect -f   '{{.Id}}'  SHORT_CONTAINER_ID-or-CONTAINER_NAME
    
  3. Copiar archivo:

    $ sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
    

EJEMPLO:

$ docker ps

CONTAINER ID      IMAGE    COMMAND       CREATED      STATUS       PORTS        NAMES

d8e703d7e303   solidleon/ssh:latest      /usr/sbin/sshd -D                      cranky_pare

$ docker inspect -f   '{{.Id}}' cranky_pare

o

$ docker inspect -f   '{{.Id}}' d8e703d7e303

d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5

$ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5**/root/file.txt

La forma más limpia es montar un directorio de host en el contenedor al iniciar el contenedor:

{host} docker run -v /path/to/hostdir:/mnt --name my_container my_image
{host} docker exec -it my_container bash
{container} cp /mnt/sourcefile /path/to/destfile
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *