Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to copy files from host to Docker container?

I am trying to build a backup and restore solution for the Docker containers that we work with.

I have Docker base image that I have created, ubuntu:base, and do not want have to rebuild it each time with a Docker file to add files to it.

I want to create a script that runs from the host machine and creates a new container using the ubuntu:base Docker image and then copies files into that container.

How can I copy files from the host to the container?

like image 244
user3001829 Avatar asked Apr 07 '14 08:04

user3001829


People also ask

How do I copy a folder from host to container?

Obtain the name or id of the Docker container. Issue the docker cp command and reference the container name or id. The first parameter of the docker copy command is the path to the file inside the container. The second parameter of the docker copy command is the location to save the file on the host.


2 Answers

The cp command can be used to copy files.

One specific file can be copied TO the container like:

docker cp foo.txt container_id:/foo.txt 

One specific file can be copied FROM the container like:

docker cp container_id:/foo.txt foo.txt 

For emphasis, container_id is a container ID, not an image ID. (Use docker ps to view listing which includes container_ids.)

Multiple files contained by the folder src can be copied into the target folder using:

docker cp src/. container_id:/target docker cp container_id:/src/. target 

Reference: Docker CLI docs for cp

In Docker versions prior to 1.8 it was only possible to copy files from a container to the host. Not from the host to a container.

like image 142
Henrik Sachse Avatar answered Oct 06 '22 10:10

Henrik Sachse


  1. Get container name or short container id:

    $ docker ps 
  2. Get full container id:

    $ docker inspect -f   '{{.Id}}'  SHORT_CONTAINER_ID-or-CONTAINER_NAME 
  3. Copy file:

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

EXAMPLE:

$ 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 

or

$ docker inspect -f   '{{.Id}}' d8e703d7e303  d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5  $ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5**/root/file.txt 
like image 21
solidleon Avatar answered Oct 06 '22 12:10

solidleon