Docker Копирование файла из узла в контейнер

Я пытаюсь скопировать набор файлов из хоста docker в контейнер. В системе AUFS, непосредственно входящей в /var/lib/docker/aufs/..., работает. Однако я являюсь еще одной системой с Fedora, у которой devicemapper является драйвером хранилища. В этой системе, если я это сделаю:

[[email protected] tmp]# docker inspect -f '{{.Id}}' 393ef4b9f485
393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24
[[email protected] tmp]# cd /var/lib/docker/devicemapper/mnt/393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24
[[email protected] 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]# ls -l
total 0
[[email protected] 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]#

Я ничего не получаю. Я пробовал все предложения от Копирование файлов с хоста на контейнер Docker

Использование tar кажется отличным, вместо прямого перехода к базовому FS. Но я не могу предположить, что tar будет присутствовать во всех контейнерах.

Если это актуально, я даже попытался создать файл в контейнере, но он, а затем нашел find. -name в /var/lib/docker/devicemapper/mnt безрезультатно.

Любые подсказки?

ИЗМЕНИТЬ 1: Исходя из одного из ответов, добавляя эти ограничения. Цель состоит в том, чтобы скопировать файлы в контейнер без. не изменять сборку контейнеров (файл Docker), b. Не устанавливать никаких демонов ssh или ftp. и c. даже не измените способ запуска контейнера.

EDIT 2: добавление информации о докере

# docker info
Containers: 1
Images: 21
Storage Driver: devicemapper
 Pool Name: docker-253:0-397467-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file:
 Metadata file:
 Data Space Used: 4.261 GB
 Data Space Total: 107.4 GB
 Data Space Available: 103.1 GB
 Metadata Space Used: 3.596 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.144 GB
 Udev Sync Supported: true
 Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 3.17.4-301.fc21.x86_64
Operating System: Fedora 21 (Twenty One)
CPUs: 4
Total Memory: 3.86 GiB
Name: fedora-docker

Версия Docker - 1.6.0, а изображение контейнера - RHEL.

Ответ 1

UPDATE: Теперь команда командной строки docker cp работает в обоих направлениях. См. документация docker cp

Использование

docker cp [ОПЦИИ] КОНТЕЙНЕР: SRC_PATH DEST_PATH | -

docker cp [ОПЦИИ] SRC_PATH | - КОНТЕЙНЕР: DEST_PATH

======= Оригинальный ответ ==============

Нашел самый простой способ работы с драйверами хранения:

cd /proc/`docker inspect --format "{{.State.Pid}}" <containerid>`/root

Протестировали это на Fedora с Devicemapper в качестве драйвера хранилища и на Ubuntu с AUFS в качестве драйвера хранилища. Работает для меня в обоих случаях.

Ответ 2

Этот ответ дает вам другое представление о копировании.

1 > Используйте этот способ, если вы знаете IP-адрес контейнера. Если ваша цель - просто взять файлы из системы хоста и поместить их в контейнер, вы можете сделать это разными способами. Протокол передачи файлов является более простым способом. вы можете настроить SSH-сервер (sshd) в своем контейнере докеров и использовать scp или любые другие инструменты передачи файлов для этого.

2 > Совместное использование файлов через тома с помощью этой команды docker run -ti -v /host-path-of-directory-having-files/:/target-path-in-container/:rw image-name bash. Вы можете ссылаться на эту ссылку https://docs.docker.com/userguide/dockervolumes/