Есть несколько способов сделать это.
Использование докера cp:
docker cp <container_hash>:/path/to/zip/file.zip /path/on/host/new_name.zip
Использование томов докера:
Как вы указали в своем вопросе, вы также можете смонтировать путь от контейнера до вашего хоста. Вы можете сделать это, указав, где на хосте вы хотите, чтобы точка монтирования была, или не указав, где находится точка монтирования, и разрешите docker выбирать. Оба эти пути требуют разных подходов.
Пусть docker выбирает место для монтирования хоста
docker volume create random_volume_name
docker run -d --name ubuntu-libs -v random_volume_name:<path/to/mount/in/container> ubuntu-libs
Контент будет находиться на вашем хосте, здесь:
ls -l /var/lib/docker/volumes/random_volume_name/_data/
Позвольте мне выбрать место установки хоста
docker run -d --name ubuntu-libs -v <existing/mount/point/on/host>:<path/to/mount/in/container> ubuntu-libs
Это создает чистое / пустое местоположение, которое используется совместно в соответствии с местоположениями, определенными в команде. Теперь вам нужно изменить ваш Dockerfile, чтобы скопировать артефакты в этот путь, например:
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>"]
Контент теперь будет находиться на вашем хосте, здесь:
ls -l <existing/mount/point/on/host>
Я должен крикнуть @joaofnfernandes из здесь , который отлично объясняет.