2016-11-09 19 views
0

我犯了这样的Dockerfile建立自己的错误,并写入到另一个文件夹

FROM hyeshik/tailseeker:latest 
RUN rm /opt/tailseeker/conf/defaults.conf 
COPY /Users/Downloads/defaults.conf /opt/tailseeker/conf/ 
COPY /Users/Downloads/level2/* /opt/tailseeker/refdb/level2/ 
COPY /Users/Downloads/level3/* /opt/tailseeker/refdb/level3/ 

我/用户/下载/文件夹也有其他文件夹名为输入

当我跑

docker build -f /Users/Downloads/Dockerfile /Users/Downloads/ 
一个dockerfile

我收到一条错误消息,说

Sending build context to Docker daemon 126.8 GB 
Error response from daemon: Error processing tar file(exit status 1): write /input/Logs/Log.00.xml: no space left on device 

这里有一件奇怪的事情,它为什么试图写入输入文件夹?另一个是为什么它会抱怨设备上没有剩余空间。我有1TB磁盘,只有210GB被使用。我也使用了qemu-img并调整了我的Docker.qcow2。这里是我的Docker.qcow2的信息

image:/Users/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 
file format: qcow2 
virtual size: 214G (229780750336 bytes) 
disk size: 60G 
cluster_size: 65536 
Format specific information: 
    compat: 1.1 
    lazy refcounts: true 
    refcount bits: 16 
    corrupt: false 

任何人都可以请帮我从我的/内容,用户/ Downloads文件夹复制到泊坞窗图像通过上面dockerfile?

在此先感谢。

回答

2

build首先从上下文目录创建一个tarball(在你的案例中/Users/Downloads/)并将该tarball发送到服务器。 tarball是在tmp目录中创建的,这可能是您尝试构建时空间不足的原因。

当您处理大型数据集时,推荐的方法是使用卷。您可以使用绑定挂载卷来挂载主机中的文件。

如果您要添加的文件不是那么大,您可能需要使用.dockerignore忽略/Users/Downloads下的其他文件。

您也可以开始使用$DOCKER_TMPDIR

+0

我可以直接从我的本地文件复制到图像而不建立一个替代的临时目录中泊坞窗守护进程?假设我的目录内容具有文件夹输入,tocopy1,tocopy2,output.txt。如果我只想复制文件夹到copy1(58GB),copycopy2(739MB)和文件output.txt(2KB),我可以不用建设吗?我明白,如果我将.dockerignore文件添加到此文件夹,输入文件夹将被忽略。 –

+0

您可以使用'docker cp'和'docker commit'来创建一个图像 – dnephin

相关问题