Forge Home


Module for installing and managing docker


25,076 latest version

3.1 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 5.5.0 (latest)
  • 5.4.0
  • 5.3.0
  • 5.2.1
  • 5.2.0
  • 5.1.0
  • 5.0.1
  • 5.0.0
released Nov 26th 2016
This version is compatible with:
  • Puppet Enterprise 3.7
  • Puppet 3.4
  • , , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'cristifalcas-docker', '5.5.0'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add cristifalcas-docker
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install cristifalcas-docker --version 5.5.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Tags: docker


cristifalcas/docker — version 5.5.0 Nov 26th 2016


Build Status

Puppet module for installing, configuring and managing Docker

This module was forked from and modified to only work with the docker package from centos.


This module is currently only for RedHat clones 7.x:

  • Centos 7.0
  • OracleLinux 7.0
  • RedHat 7.0


The module includes a single class:

include 'docker'

By default the docker daemon will bind to a unix socket at /var/run/docker.sock. This can be changed, as well as binding to a tcp socket if required.

class { 'docker':
  bind_to    => 'tcp://',

If you want to track the latest version you can do so:

class { 'docker':
  version => 'latest',

In some cases dns resolution won't work well in the container unless you give a dns server to the docker daemon like this:

class { 'docker':
  dns => '',

The class contains lots of other options, please see the inline code documentation for the full options.


The next step is probably to install a docker image; for this we have a defined type which can be used like so:

docker::image { 'base': }

This is equivalent to running docker pull base. This is downloading a large binary so on first run can take a while. For that reason this define turns off the default 5 minute timeout for exec. Takes an optional parameter for installing image tags that is the equivalent to running docker pull -t="precise" ubuntu:

docker::image { 'ubuntu':
  image_tag => 'precise'

Note: images will only install if an image of that name does not already exist.

A images can also be added/build from a dockerfile with the docker_file property, this equivalent to running docker build -t ubuntu - < /tmp/Dockerfile

docker::image { 'ubuntu':
  docker_file => '/tmp/Dockerfile'

Images can also be added/build from a directory containing a dockerfile with the docker_dir property, this is equivalent to running docker build -t ubuntu /tmp/ubuntu_image

docker::image { 'ubuntu':
  docker_dir => '/tmp/ubuntu_image'

You can also remove images you no longer need with:

docker::image { 'base':
  ensure => 'absent'

docker::image { 'ubuntu':
  ensure    => 'absent',
  image_tag => 'precise'

If using hiera, there's a docker::images class you can configure, for example:

    image_tag: 'precise'

Private registries

By default images will be pushed and pulled from unless you've specified a server. If you have your own private registry without authentication, you can fully qualify your image name. If your private registry requires authentication you may configure a registry:

docker::registry { '':
  username => 'user',
  password => 'secret',
  email    => '',

You can logout of a registry if it is no longer required.

docker::registry { '':
  ensure => 'absent',

If using hiera, there's a docker::registry_auth class you can configure, for example:

    username: 'user1'
    password: 'secret'
    email: ''