Copier des fichiers du container vers le host

La copie de fichier peut se faire dans le dockerfile ou docker-compose ce qui est préférable pour une utilisation durable.
Par exemple, un container execute un jar auto executable.
On copie donc le jar par le Dockerfile au lieu de le faire à chaque fois.
Exemple de Dockerfile:

FROM openjdk:8u131-alpine

RUN groupadd -r jaruser && useradd --no-log-init -r -g jaruser jaruser

ADD zip/*.zip /app.zip

RUN mkdir /myApp \
        && unzip app.zip -d /myApp \
        && chmod u+x /myApp/run_jar.sh

USER jaruser
ENTRYPOINT ["/myApp/run_jar.sh"]

Par contre, lors de tests il peut s'avérer pratique de copier spontanément un fichier entre le host et le container et inversément.

Du host vers le container

Il suffit d'utiliser la commande:
$ docker cp

Du container vers le host

  • Il est possible de monter un volume partagé -v $PWD/shared:/sharedet d'utiliser ce shared folder comme passerelle.
  • Il y a aussi la possibilité de recréer le fichier par ce workaround:
    $ cat /local/file/path | docker exec -i <running-container-id> sh -c 'cat > /inside/docker/file/path'