2016-10-12 53 views
1

我是新來的碼頭。我已經嘗試了不到兩週。我們有一項我們想要遷移到容器中的服務。該服務使用了大約50G的數據,因此我們期望圖像非常大。我們已經爲它寫了一個Dockerfile。當我們運行構建失敗與FF:大廈碼頭圖像下載大文件失敗,錯誤

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

當我們檢查集裝箱碼頭工人PS -a,我們可以看到狀態列出的建集裝箱:

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檢查容器。當我們排除下載最大的文件時,我們可以完成構建服務映像。是否有某種配置可以改變,但仍然包含較大的文件?

搬運工版本

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

作爲灝明章建議,安裝在主機目錄到容器是可接受的解決方案。我們還在探索使用FUSE在運行時將數據加載到容器中的可能性,而不是在構建期間將其映射到映像中,或者在容器運行時讓主機將其傳遞到容器中。