Docker将文件从主机复制到容器 [英] Docker Copying file from host to container

查看:401
本文介绍了Docker将文件从主机复制到容器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一组文件从docker主机复制到容器。
在直接进入/ var / lib / docker / aufs / ...的AUFS系统上有效。
但是我是另一个使用Fedora的系统,它具有devicemapper作为存储驱动程序。
在这个系统上,如果我这样做:

I am trying to copy a set of files from docker host to container. On a AUFS system directly going into /var/lib/docker/aufs/... works. However I am another system with Fedora that has devicemapper as the storage driver. On this system if I do this:

[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容器的所有建议

使用tar似乎很棒,而不是直接转到基础FS。但是我不能假定所有容器中都会存在tar。

Using tar seems to be great, instead of directly going to the underlying FS. But I cannot assume that tar would be present in all containers.

如果相关,我什至尝试在容器中创建一个文件,但随后确实做了一个发现。 / var / lib / docker / devicemapper / mnt中的名称无效。

If it is relevant, I have even tried to create a file in the container, but it and then did a find . -name in /var/lib/docker/devicemapper/mnt to no avail.

有任何提示吗?

编辑1:
根据答案之一,添加这些约束。
的目的是将文件复制到没有a的容器中。不修改容器构建(Dockerfile),b。不安装任何ssh或ftp守护程序。和c。

EDIT 1: Based on one of the answers, adding these constraints. The intent is to copy files into a container without a. not modify the containers build (Dockerfile), b. To not install any ssh or ftp daemons. and c. not even change the way the container was started.

编辑2:添加docker info

EDIT 2: Adding the docker info :

# 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 Version is 1.6.0 and container image is based on RHEL.

推荐答案

更新:
现在docker cp命令行命令可以双向运行。
请参见 docker cp 文档


用法

Usage

docker cp [选项]容器:SRC_PATH DEST_PATH |-

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [选项] SRC_PATH |-容器:DEST_PATH

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

=======原始答案============

=======Original Answer ==============

找到了最简单的跨存储驱动程序的方法:

Found the most easiest way that works across storage drivers:

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

已在使用Devicemapper作为存储驱动程序
的Fedora以及在使用AUFS作为存储驱动程序的Ubuntu上对此进行了测试。
都适合我。

Have tested this on Fedora with Devicemapper as the storage driver and on Ubuntu with AUFS as the storage driver. Works for me in both the cases.

这篇关于Docker将文件从主机复制到容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆