如何弄清楚,什么减慢docker?

我的问题是以下 – 我有OSX上的Docker与包含Redis,NginX,PHP 7和Unison的容器。 映射到php容器我有Symfony 3.1.7的音量。

一切正常,但Symfony的“欢迎”页面平均加载时间大约为1.5秒。 同时没有docker的设置给了我0.2秒的加载时间。 我得到了Symfony的控制台命令的差异,所以,我猜,这不是Nginx的问题,而Unison应该已经否定了与OSX问题上的Docker文件同步有关的所有问题。

现在我已经没有想法了,我能做些什么来加快速度,以及如何找出造成1.5秒延迟的原因。

我的第二个MBP有同样的问题,但这种事情不会发生在同事的笔记本电脑上,这与我的笔记本电脑类似,但我们无法find两个设置之间的任何区别。

一切运行在我的MBP与2.5 GHz i5,8 Gb RAM和SSD。

Docker 1.12.3,OSX 10.12.1(Sierra)

泊坞窗,compose.yml:

mydockerbox-redis: image: phpdockerio/redis:latest container_name: mydockerbox-redis mydockerbox-webserver: image: phpdockerio/nginx:latest container_name: mydockerbox-webserver volumes: - ..:/var/www/mydockerbox - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf ports: - "80:80" links: - mydockerbox-php-fpm unison: image: leighmcculloch/unison:latest environment: - UNISON_WORKING_DIR=/unison volumes: - ../mydockerbox:/var/www/mydockerbox ports: - "5000:5000" mydockerbox-php-fpm: build: . dockerfile: php-fpm/Dockerfile container_name: mydockerbox-php-fpm volumes_from: - unison volumes: - ./php-fpm/php-ini-overrides.ini:/etc/php/7.0/fpm/conf.d/99-overrides.ini links: - mydockerbox-redis 

UPD这里是用于php-fpm容器的Dockerfile:

 FROM phpdockerio/php7-fpm:latest # Install selected extensions and other stuff RUN apt-get update \ && apt-get -y --no-install-recommends install php7.0-mongodb php7.0-redis php7.0-igbinary \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* WORKDIR "/var/www/mydockerbox" 

我build议你使用docker-machine-driver-xhyve :

用于xhyve / hyperkit的docker-machine / libmachine驱动程序插件( native macOS hypervisor.framework )

你可以简单地安装brew(我希望你已经安装了docker&co,也可以使用brew来安装,否则请用brew来安装):

 brew install docker-machine-driver-xhyve sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve 

然后你可以创build一个docker机器:

 docker-machine create --driver xhyve --xhyve-experimental-nfs-share my-xhyve-docker-machine 

并用它来运行你的容器

首先,在你的php-fpm容器(例如使用这个 )中testingPHP性能,并将其与你的同事的容器进行比较。

如果您发现性能相同/可比较,那么在生成“欢迎”页面的同时,使用PHP性能分析工具来查找Symfony在1.5秒内的每一位所做的工作。 这可能会确定瓶颈(可能是文件系统,与Redis容器的networking通信,DNS查找等)。

如果基准testing显示容器中的PHP本身运行速度较慢(我认为这不太可能),那么在主机上运行基准testing。 如果主机和php-fpm contaner的结果有很大的不同,这将意味着docker引擎正在调节资源,需要进行深入的调整或重新安装。