Docker构建需要太长时间 [英] Docker build takes too long

查看:327
本文介绍了Docker构建需要太长时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Dockerfiles中的某些指令花费的时间太长。例如,使用 ADD 指令添加3行文件或者将一行回显到文件中有时需要一分钟。



可能导致这种情况?



这是我的syslog,不确定是否相关:

  5月29日18:45:17 mymachine内核:[97813.649053] EXT4-fs(dm-3):安装有序数据模式的文件系统。选项:丢弃
5月29日18:45:54 mymachine内核:[97850.627286] EXT4-fs(dm-3):加载有序数据模式的文件系统。选项:丢弃
5月29日18:45:55 mymachine内核:[97851.249484] EXT4-fs(dm-4):安装有序数据模式的文件系统。选项:丢弃
May 29 18:46:34 mymachine console-kit-daemon [983]:GLib-CRITICAL:尝试删除它时找不到源ID 5102
May 29 18:46:53 mymachine内核:[97908.977215] EXT4-fs(dm-2):安装了有序数据模式的文件系统。选项:丢弃
5月29日18:46:53 mymachine内核:[97909.217137] EXT4-fs(dm-2):安装了有序数据模式的文件系统。选项:丢弃
5月29日18:46:53 mymachine内核:[97909.247252] EXT4-fs(dm-3):安装有序数据模式的文件系统。选项:丢弃
5月29日18:47:26 mymachine内核:[97942.607378] EXT4-fs(dm-3):加载有序数据模式的文件系统。选项:丢弃
5月29日18:47:26 mymachine内核:[97942.767831] EXT4-fs(dm-4):安装了有序数据模式的文件系统。选项:丢弃
5月29日18:48:36 mymachine内核:[98012.632630] EXT4-fs(dm-2):安装有序数据模式的文件系统。选项:丢弃
5月29日18:48:37 mymachine内核:[98013.681835] EXT4-fs(dm-2):安装有序数据模式的文件系统。选项:丢弃
5月29日18:48:38 mymachine内核:[98014.009612] netlink:解析属性后剩下1个字节。
May 29 18:48:38 mymachine kernel:[98014.016816]设备vethb49f进入混杂模式
May 29 18:48:38 mymachine kernel:[98014.020408] IPv6:ADDRCONF(NETDEV_UP):vethb49f:link is没有准备好
May 29 18:48:38 mymachine kernel:[98014.046745] IPv6:ADDRCONF(NETDEV_CHANGE):vethb49f:link ready ready
May 29 18:48:38 mymachine kernel:[98014.046785] docker0:端口2(vethb49f)进入转发状态
May 29 18:48:38 mymachine kernel:[98014.046791] docker0:port 2(vethb49f)进入转发状态
May 29 18:48:39 mymachine kernel:[ 98015.128850] EXT4-fs(dm-3):安装了有序数据模式的文件系统。选项:discard
May 29 18:48:39 mymachine kernel:[98015.174370] docker0:port 2(vethb49f)进入禁用状态
May 29 18:48:39 mymachine kernel:[98015.174860] device vethb49f left混杂模式
May 29 18:48:39 mymachine kernel:[98015.174867] docker0:port 2(vethb49f)进入禁用状态
May 29 18:49:18 mymachine kernel:[98054.703978] EXT4-fs dm-3):安装有序数据模式的文件系统。选项:丢弃
5月29日18:49:18 mymachine内核:[98054.834326] EXT4-fs(dm-4):安装有序数据模式的文件系统。选项:丢弃
5月29日18:50:14 mymachine内核:[98110.408736] EXT4-fs(dm-2):安装有序数据模式的文件系统。选项:丢弃
5月29日18:50:15 mymachine内核:[98111.221056] EXT4-fs(dm-2):安装有序数据模式的文件系统。选项:丢弃
5月29日18:50:15 mymachine内核:[98111.443577] EXT4-fs(dm-3):安装有序数据模式的文件系统。选项:丢弃
5月29日18:50:44 mymachine内核:[98140.675447] EXT4-fs(dm-3):加载有序数据模式的文件系统。选项:丢弃
5月29日18:50:44 mymachine内核:[98140.695348] EXT4-fs(dm-4):安装文件系统与有序数据模式。选项:丢弃
5月29日18:51:36 mymachine内核:[98192.027431] EXT4-fs(dm-2):装载的文件系统带有排序数据模式。选项:丢弃
5月29日18:51:36 mymachine内核:[98192.559271] EXT4-fs(dm-2):安装有序数据模式的文件系统。选项:discard
May 29 18:51:36 mymachine kernel:[98192.800718] netlink:解析属性后剩下1个字节。
May 29 18:51:36 mymachine kernel:[98192.881484]设备veth000f进入混杂模式
May 29 18:51:36 mymachine kernel:[98192.881966] IPv6:ADDRCONF(NETDEV_UP):veth000f:link is没有准备好
May 29 18:51:36 mymachine kernel:[98192.945999] IPv6:ADDRCONF(NETDEV_CHANGE):veth000f:link ready ready
May 29 18:51:36 mymachine kernel:[98192.946045] docker0:端口2(veth000f)进入转发状态
May 29 18:51:36 mymachine kernel:[98192.946051] docker0:port 2(veth000f)进入转发状态
May 29 18:51:37 mymachine kernel:[ 98193.274007] docker0:port 2(veth000f)进入禁用状态
May 29 18:51:37 mymachine kernel:[98193.275061] device veth000f left promiscuous mode
May 29 18:51:37 mymachine kernel:[98193.275068 ] docker0:port 2(veth000f)进入禁用状态
5月29日18:51:37 mymachine内核:[98193.319695] EXT4-fs(dm-3):安装有序数据模式的文件系统。选项:丢弃
5月29日18:52:17 mymachine内核:[98233.520926] EXT4-fs(dm-3):加载有序数据模式的文件系统。选项:丢弃
5月29日18:52:17 mymachine内核:[98233.608787] EXT4-fs(dm-4):安装有序数据模式的文件系统。选择:丢弃

Docker信息:

 容器:2 
图像:172
存储驱动程序:devicemapper
池名称:docker-202:1-1447309-pool
数据文件: / var / lib / docker / devicemapper / devicemapper / data
元数据文件:/ var / lib / docker / devicemapper / devicemapper / metadata
使用的数据空间:4443.4 Mb
数据空间总计:102400.0 Mb
元数据空间:9.4 Mb
元数据空间总计:2048.0 Mb
执行驱动程序:native-0.2
内核版本:3.13.0-24-generic
警告:没有交换限制支持


解决方案

哪个Docker后端正在运行? AUFS?设备映射? BTRFS? ...?



切换到AUFS后端,如果您的操作系统支持,可能在这里很有用。


$ b $一个更权威的答案将需要知道你正在使用哪个后端,你所处的系统的性能特征,或者是一个跟踪它的调用(比如sysdig可以产生什么)。


Certain instructions in my Dockerfiles are taking too long. For example, adding a 3 lines file with the ADD instruction or echoing a line into a file sometimes takes more than a minute.

What can be causing this?

Here's my syslog, not sure if relevant:

May 29 18:45:17 mymachine kernel: [97813.649053] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:45:54 mymachine kernel: [97850.627286] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:45:55 mymachine kernel: [97851.249484] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard
May 29 18:46:34 mymachine console-kit-daemon[983]: GLib-CRITICAL: Source ID 5102 was not found when attempting to remove it
May 29 18:46:53 mymachine kernel: [97908.977215] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:46:53 mymachine kernel: [97909.217137] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:46:53 mymachine kernel: [97909.247252] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:47:26 mymachine kernel: [97942.607378] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:47:26 mymachine kernel: [97942.767831] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard
May 29 18:48:36 mymachine kernel: [98012.632630] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:48:37 mymachine kernel: [98013.681835] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:48:38 mymachine kernel: [98014.009612] netlink: 1 bytes leftover after parsing attributes.
May 29 18:48:38 mymachine kernel: [98014.016816] device vethb49f entered promiscuous mode
May 29 18:48:38 mymachine kernel: [98014.020408] IPv6: ADDRCONF(NETDEV_UP): vethb49f: link is not ready
May 29 18:48:38 mymachine kernel: [98014.046745] IPv6: ADDRCONF(NETDEV_CHANGE): vethb49f: link becomes ready
May 29 18:48:38 mymachine kernel: [98014.046785] docker0: port 2(vethb49f) entered forwarding state
May 29 18:48:38 mymachine kernel: [98014.046791] docker0: port 2(vethb49f) entered forwarding state
May 29 18:48:39 mymachine kernel: [98015.128850] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:48:39 mymachine kernel: [98015.174370] docker0: port 2(vethb49f) entered disabled state
May 29 18:48:39 mymachine kernel: [98015.174860] device vethb49f left promiscuous mode
May 29 18:48:39 mymachine kernel: [98015.174867] docker0: port 2(vethb49f) entered disabled state
May 29 18:49:18 mymachine kernel: [98054.703978] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:49:18 mymachine kernel: [98054.834326] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard
May 29 18:50:14 mymachine kernel: [98110.408736] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:50:15 mymachine kernel: [98111.221056] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:50:15 mymachine kernel: [98111.443577] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:50:44 mymachine kernel: [98140.675447] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:50:44 mymachine kernel: [98140.695348] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard
May 29 18:51:36 mymachine kernel: [98192.027431] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:51:36 mymachine kernel: [98192.559271] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: discard
May 29 18:51:36 mymachine kernel: [98192.800718] netlink: 1 bytes leftover after parsing attributes.
May 29 18:51:36 mymachine kernel: [98192.881484] device veth000f entered promiscuous mode
May 29 18:51:36 mymachine kernel: [98192.881966] IPv6: ADDRCONF(NETDEV_UP): veth000f: link is not ready
May 29 18:51:36 mymachine kernel: [98192.945999] IPv6: ADDRCONF(NETDEV_CHANGE): veth000f: link becomes ready
May 29 18:51:36 mymachine kernel: [98192.946045] docker0: port 2(veth000f) entered forwarding state
May 29 18:51:36 mymachine kernel: [98192.946051] docker0: port 2(veth000f) entered forwarding state
May 29 18:51:37 mymachine kernel: [98193.274007] docker0: port 2(veth000f) entered disabled state
May 29 18:51:37 mymachine kernel: [98193.275061] device veth000f left promiscuous mode
May 29 18:51:37 mymachine kernel: [98193.275068] docker0: port 2(veth000f) entered disabled state
May 29 18:51:37 mymachine kernel: [98193.319695] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:52:17 mymachine kernel: [98233.520926] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: discard
May 29 18:52:17 mymachine kernel: [98233.608787] EXT4-fs (dm-4): mounted filesystem with ordered data mode. Opts: discard

Docker info:

Containers: 2
Images: 172
Storage Driver: devicemapper
 Pool Name: docker-202:1-1447309-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 4443.4 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 9.4 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.2
Kernel Version: 3.13.0-24-generic
WARNING: No swap limit support

解决方案

Which Docker backend are you running? AUFS? device-mapper? btrfs? ...?

Switching to the AUFS backend, if your operating system supports it, is likely to be helpful here.

A more authoritative answer would require knowing which backend you're using, the performance characteristics of the system you're on, and perhaps a trace of its invocation (such as what sysdig can generate).

这篇关于Docker构建需要太长时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆