Advisory: This site contains documentation for the v1.12 release candidate version of Docker Engine. For the Docker Engine v1.11 docs, see Docker for Mac and Docker for Windows are currently in Beta.

Using Chef

Note: Please note this is a community contributed installation path.


To use this guide you’ll need a working installation of Chef. This cookbook supports a variety of operating systems.


The cookbook is available on the Chef Supermarket and can be installed using your favorite cookbook dependency manager.

The source can be found on GitHub.


  • Add depends 'docker', '~> 2.0' to your cookbook’s metadata.rb
  • Use resources shipped in cookbook in a recipe, the same way you’d use core Chef resources (file, template, directory, package, etc).
docker_service 'default' do
  action [:create, :start]

docker_image 'busybox' do
  action :pull

docker_container 'an echo server' do
  repo 'busybox'
  port '1234:1234'
  command "nc -ll -p 1234 -e /bin/cat"

Getting Started

Here’s a quick example of pulling the latest image and running a container with exposed ports.

# Pull latest image
docker_image 'nginx' do
  tag 'latest'
  action :pull

# Run container exposing ports
docker_container 'my_nginx' do
  repo 'nginx'
  tag 'latest'
  port '80:80'
  binds [ '/some/local/files/:/etc/nginx/conf.d' ]
  host_name 'www'
  domain_name ''
  env 'FOO=bar'
  subscribes :redeploy, 'docker_image[nginx]'