docker copy file from one container to another?

In recent versions of docker, named volumes replace data containers as the easy way to share data between containers.

docker volume create --name myshare
docker run -v myshare:/shared task1
docker run -v myshare:/shared -p 8080:8080 task2
...

Those commands will set up one local volume, and the -v myshare:/shared argument will make that share available as the folder /shared inside each of each container.

To express that in a compose file:

version: '2'
services:
  task1:
    build: ./task1
  volumes:
    - 'myshare:/shared'

  task2:
    build: ./task2
  ports:
    - '8080:8080'
  volumes:
    - 'myshare:/shared'

volumes:
  myshare:
    driver: local 

To test this out, I made a small project:

- docker-compose.yml (above)
- task1/Dockerfile
- task1/app.py
- task2/Dockerfile

I used node's http-server as task2/Dockerfile:

FROM node
RUN npm install -g http-server
WORKDIR /shared
CMD http-server

and task1/Dockerfile used python:alpine, to show two different stacks writing and reading.

FROM python:alpine
WORKDIR /app
COPY . .
CMD python app.py

here's task1/app.py

import time

count = 0
while True:
  fname = '/shared/{}.txt'.format(count)
  with open(fname, 'w') as f:
    f.write('content {}'.format(count))
    count = count + 1
  time.sleep(10)

Take those four files, and run them via docker compose up in the directory with docker-compose.yml - then visit $DOCKER_HOST:8080 to see a steadily updated list of files.

Also, I'm using docker version 1.12.0 and compose version 1.8.0 but this should work for a few versions back.

And be sure to check out the docker docs for details I've probably missed here:
https://docs.docker.com/engine/tutorials/dockervolumes/


For me the best way to copy file from or to container is using docker cp for example: If you want copy schema.xml from apacheNutch container to solr container then:

  1. docker cp apacheNutch:/root/nutch/conf/schema.xml /tmp/schema.xml server/solr/configsets/nutch/

  2. docker cp /tmp/schema.xml solr:/opt/solr-8.1.1/server/solr/configsets/nutch/conf