Методы копирования файлов из Docker-контейнера в хост-систему с примерами кода

Чтобы скопировать файл из контейнера Docker в хост-систему, вы можете использовать различные методы в зависимости от ваших конкретных потребностей и предпочтений. Вот несколько распространенных подходов с примерами кода:

Метод 1: использование команды docker cp
Вы можете использовать команду docker cpдля копирования файлов или каталогов между контейнером и хост-системой. Вот пример:

docker cp <container_name_or_id>:<container_path> <host_path>

Замените на имя или идентификатор контейнера Docker, на путь к файлу или каталогу внутри контейнера и — путь назначения в хост-системе.

Например, чтобы скопировать файл с именем example.txtиз контейнера с именем my-containerв /path/on/hostкаталог в хост-системе, вы должны запустить:

docker cp my-container:/path/to/example.txt /path/on/host/

Метод 2: использование томов Docker
Если вы настроили том Docker для своего контейнера, вы можете смонтировать том в хост-системе и получить прямой доступ к файлам. Вот пример:

docker run -v <volume_name>:/host <image_name>

Замените именем вашего тома Docker и именем образа Docker.

Когда контейнер запущен, вы можете получить доступ к файлам тома из указанного каталога хоста. Любые изменения, внесенные в файлы, будут отражены как в контейнере, так и в хост-системе.

Метод 3: использование общих каталогов
Если у вас есть общие каталоги между хостом и контейнером, любые изменения, внесенные в одном месте, будут автоматически отражены в другом. Вы можете скопировать файлы в общий каталог контейнера, и он будет доступен в хост-системе.

Вот пример файла Dockerfile, определяющего общий каталог:

FROM <base_image>
VOLUME /shared
CMD ["tail", "-f", "/dev/null"]

Создайте образ, используя docker build -tshared-container., а затем запустите его:

docker run -d --name my-shared-container shared-container

Теперь вы можете скопировать файлы в каталог /sharedвнутри контейнера, и они будут доступны в хост-системе.