2016-10-12 4 views
1

나는 도커를 처음 사용합니다. 나는 2 주 미만 동안 그것을 시도하고있다. 우리는 컨테이너로 마이그레이션하려는 서비스를 보유하고 있습니다. 이 서비스는 약 50G 상당의 데이터를 사용하므로 이미지가 매우 커질 것으로 예상됩니다. 우리는 Dockerfile을 작성했습니다. 우리가 컨테이너 부두 노동자 추신 -a를 검사 할 때큰 파일을 다운로드하는 도커 이미지가 오류로 인해 실패합니다.

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

, 우리는 상태와 함께 나열 빌드 컨테이너를 볼 수 있습니다 : 우리가 빌드를 실행하면 그것은 FF 실패

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 

또한 컨테이너를 검사 할 수 있습니다. 가장 큰 파일 다운로드를 제외하면 서비스 이미지 작성을 완료 할 수 있습니다. 더 큰 파일을 포함하면서 우리가 변경할 수있는 일종의 구성이 있습니까?

고정 표시기 버전

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 

고정 표시기 정보

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 
+0

Dockerfile을 게시 할 수 있습니까? 게다가 많은 양의 데이터가있는 경우에는 이미지로 저장하는 대신 볼륨 (https://docs.docker.com/engine/tutorials/dockervolumes/)에 저장하는 것이 좋습니다. 20,30GB가 넘는 이미지는 밀고 당길 때 문제가 발생할 수 있습니다. –

+0

나는 그것을 할 수 없다. 그리고 나는 그것이 매우 유용 할 것이라고 생각하지 않는다. Dockerfile이하는 일은 docker 컴퓨터에서 기존의 불가능한 게임 플레이 북을 실행하는 것입니다. 플레이 북의 작업 중 하나는 gsutil을 사용하여 클라우드의 대형 개인 파일과 동기화합니다. 플레이 북을 사용하지 않고 클라우드에 액세스하지 않으면 Dockerfile을 구축 할 수 없습니다. 볼륨을 올리기 위해 살펴볼 것입니다. 20/30GB 크기 제한에 대한 추가 설명서가 있습니까? – user1550120

+0

크기 제한에 대한 공식 문서가 없습니다. 나는 큰 이미지에 대해 그런 문제를 겪었으며, 어딘가에서 언급 한 부두 엔지니어들 중 하나가 기억납니다. 귀하의 마일리지가 다를 수 있습니다. 디자인에 대해 다시 생각해 볼 수 있습니다. 볼륨을 장착하면 컨테이너의 데이터를 관리하는 것이 좋습니다. –

답변

0

Haoming 장 추천으로, 용기에 호스트 디렉토리를 설치하는 것은 허용 솔루션입니다. 또한 FUSE를 사용하여 런타임 중에 데이터를 컨테이너에로드하는 대신 빌드 중에 이미지로 베이킹하거나 컨테이너가 실행될 때 컨테이너가 컨테이너로 데이터를 전달하도록 할 수 있습니다.

관련 문제