There’s some caveats with kitchen-docker. When the cache is cold, things are slow. Once it’s warmed up, things tend to be really fast. In my experience, the first run with kitchen-docker is about the same speed or a bit slower than an equivalent Vagrant run.
Also, you can’t do your first kitchen run in parallel with a cold boot2docker. The disk usage in the vm tends to increase faster than the guest-disk-auto-resize in virtualbox can manage, and my runs fail as a result. Serialize the first time through.
All that said, subsequent runs are much, much faster and parallelize no problem.
Retina MBP Mid–2012 (Core i7 16GB RAM)
boot2docker 1.5.0 (from brew cask)
docker 1.5.0 (from brew cask)
VMWare Fusion 7.1.1
Have my vagrant box already cached
Here’s a repo with a very simple recipe, just one template and an attribute feature flag. The repo contains a .kitchen.yml that does 3 suites: https://github.com/charlesjohnson/fundamentals-with-tests/blob/master/chef-repo/cookbooks/motd/.kitchen.yml
Here’s my .kitchen.local.yml that I layer in on top of it:
provision_command: curl -L https://www.opscode.com/chef/install.sh | bash
Turning off the require_chef_omnibus flag and manually curl-pipe-bash’ing puts the installation of chef-client into its own layer in the docker cache. Slow the first time, zippy as hell afterward.
Here’s some quick informal benchmarks for those runs, just doing a kitchen destroy; kitchen converge (no busser):
Kitchen-Docker (cold booted VM, no layers cached at all, no parallel):
-----> Kitchen is finished. (2m38.15s)
Kitchen-Docker (warm cache, no parallel): -----> Kitchen is finished. (0m22.73s)
Kitchen-Docker (warm cache, parallel): -----> Kitchen is finished. (0m7.02s)
So by using kitchen-docker I get 8-second kitchen runs, including machine creation from scratch each time. Not bad at all.
Charles Johnson — Product Engineer
(510) 545-9485 – email@example.com – my: Linkedin Twitter
chef.io Blog Facebook Twitter Youtube
On April 4, 2015 at 7:47:45 AM, Jimmy Huang (firstname.lastname@example.org) wrote:
I am trying out kitchen-docker as a replacement for kitchen-vagrant, hoping to speed up my integration tests. Unfortunately, the tests take ten times as long to run with kitchen-docker compared to kitchen vagrant. I am on test-kitchen 1.3.1 and kitchen-docker 1.7.0. Below is my .kitchen.yml. I used Boot2Docker to install Docker and Vagrant on my machine. Thank you for your help.
- name: ubuntu-14.04
- name: stag