Docker将文件从主机复制到容器
我正试图将一组文件从docker主机复制到容器中。 在直接进入/ var / lib / docker / aufs / ...的AUFS系统上工作。 不过,我是Fedora的另一个系统,它使用devicemapper作为存储驱动程序。 在这个系统上,如果我这样做:
[root@myhost tmp]# docker inspect -f '{{.Id}}' 393ef4b9f485
393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24
[root@myhost tmp]# cd /var/lib/docker/devicemapper/mnt/393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24
[root@myhost 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]# ls -l
total 0
[root@myhost 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]#
我什么也没得到。 我已经尝试了将文件从主机复制到Docker容器的所有建议
使用焦油似乎很好,而不是直接进入底层的FS。 但我不能认为焦油会出现在所有容器中。
如果它是相关的,我甚至试图在容器中创建一个文件,但它然后做了一个查找。 -name在/ var / lib / docker / devicemapper / mnt中无效。
任何提示?
编辑1:根据其中一个答案,添加这些约束。 目的是将文件复制到一个没有。 不修改容器构建(Dockerfile),b。 不要安装任何ssh或ftp守护进程。 和c。 甚至不改变容器的启动方式。
编辑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。
更新:现在,docker cp命令行命令可以同时工作。 请参阅docker cp文档
用法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | -
docker cp [OPTIONS] SRC_PATH | - CONTAINER:DEST_PATH
=======原文答案==============
找到跨存储驱动程序工作的最简单方法:
cd /proc/`docker inspect --format "{{.State.Pid}}" <containerid>`/root
已经使用Devicemapper作为存储驱动程序在Ubuntu上进行了测试,在Ubuntu上使用AUFS作为存储驱动程序进行了测试。 适用于这两种情况。
这个答案为您提供了复制的不同观点。
1>使用这种方式只要知道容器的IP即可。 如果您的目标只是将文件从主机系统中取出并放入容器中,则可以采用不同的方式进行操作。 文件传输协议是一种更简单的方法。 您可以在Docker容器上设置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/
上一篇: Docker Copying file from host to container
下一篇: What is the difference between the `COPY` and `ADD` commands in a Dockerfile?