docker - 构建下载大文件的Docker镜像失败并出现错误

标签 docker

我是Docker的新手。我已经尝试了不到两个星期。我们有一项服务,希望将其迁移到容器中。该服务使用了约50G的数据,因此我们希望图像非常大。我们已经为此编写了一个Dockerfile。当我们运行构建时,它将失败并显示以下内容:

ApplyLayer exit status 1 stdout: stderr: write /mnt/spine_features/spine_features_subset.lmdb/data.mdb: input/output error

当我们检查docker ps -a中的容器时,我们可以看到列出状态为build的构建容器:
Exited (1) About a minute ago

当我们尝试提交容器时,我们得到相同的错误:
Error response from daemon: ApplyLayer exit status 1 stdout: stderr: write /mnt/spine_features/spine_features_subset.lmdb/data.mdb: input/output error

我们还可以 docker 检查容器。当我们排除下载最大的文件时,便能够完成服务镜像的构建。在仍然包含较大文件的情况下,是否可以进行某种配置更改以成功完成?

docker 版本
Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.7
 Git commit:   23cf638
 Built:        Fri Aug 19 02:03:02 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.7
 Git commit:   23cf638
 Built:        Fri Aug 19 02:03:02 2016
 OS/Arch:      linux/amd64

docker 信息
Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 22
Server Version: 1.12.1
Storage Driver: devicemapper
 Pool Name: docker-8:2-7603782-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 214.7 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 67.78 GB
 Data Space Total: 107.4 GB
 Data Space Available: 39.59 GB
 Metadata Space Used: 37.04 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.11 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.134 (2016-09-07)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.7.4-1-ARCH
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 15.58 GiB
Name: mega-haro
ID: MDQ5:JIT3:BVQX:XYO6:YTXI:HTRE:N2UQ:ML4V:ENIE:DDCO:ZGYF:3P5F
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 misty:5000
 127.0.0.0/8

最佳答案

正如Haoming Zhang所建议的那样,将主机目录挂载到容器中是一种可接受的解决方案。我们还在探索使用FUSE在运行时将数据加载到容器中的可能性,而不是在构建过程中将其烘焙到镜像中,或者在容器运行时让主机将其传递到容器中。

关于docker - 构建下载大文件的Docker镜像失败并出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009282/

相关文章:

docker - Docker差异镜像

mysql - ER_HOST_NOT_PRIVILEGED - docker 容器无法连接到 mariadb

Docker-compose 在 WSL 上使用不正确的路径 :\\?\C:\

docker - 如何在docker中将参数传递给supervisord?

amazon-web-services - 将Docker容器部署到AWS时,是否还需要部署自己的反向代理?

node.js - 如何停止在docker中运行 Node

docker - Heroku h18 错误,而我的后端响应 200 到他们的路由器(多部分/表单数据)

ruby-on-rails - Docker - docker-compose 'version' 没有任何配置选项

docker - 我可以在构建Docker镜像时挂载卷吗?

amazon-web-services - AWS Lambda Sam找不到Docker