加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – Docker将文件从主机复制到容器

发布时间:2020-12-16 01:36:31 所属栏目:安全 来源:网络整理
导读:我正在尝试将一组文件从docker host复制到容器. 在AUFS系统上直接进入/ var / lib / docker / aufs / …工作. 但是我是Fedora的另一个系统,它将devicemapper作为存储驱动程序. 在这个系统上如果我这样做: [root@myhost tmp]# docker inspect -f '{{.Id}}' 3
我正在尝试将一组文件从docker host复制到容器.
在AUFS系统上直接进入/ var / lib / docker / 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]#

我一无所获.
我已经尝试了Copying files from host to Docker container的所有建议

使用tar似乎很棒,而不是直接转到底层FS.但我不能假设所有容器中都存在焦油.

如果它是相关的,我甚至尝试在容器中创建一个文件,但它然后进行了查找. / var / lib / docker / devicemapper / mnt中的-name无效.

任何提示?

编辑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 Version为1.6.0,容器映像基于RHEL.

更新:
现在,docker cp命令行命令可以双向工作.
请参阅 docker cp文档

Usage

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

已经在Fedora上使用Devicemapper作为存储驱动程序进行了测试以及AUFS作为存储驱动程序的Ubuntu.在这两种情况下都适用于我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读