运用Puppet

说明:请注意这是社区提供的的安装方式。官方的方式请阅读Ubuntu环境下安装Docker。这个版本可能已经过时了。

先决条件

请访问Puppet Labs了解Puppet的安装。

当前使用的官方PPA的module仅仅在Ubuntu中使用。

安装

Puppet Forge上,module是有效的,可以构建的module工具来安装。

  1. $ puppet module install garethr/docker

这可以在Github上可以找到,如果你希望通过源码安装。

用法

module提供了一个puppet类来安装docker,两个定义好的类型来管理镜像和容器。

安装

  1. include 'docker'

镜像

接下来可以来安装一个Docker镜像。为了这些,我们有一个定义好的类型,具体使用方法如下:

  1. docker::image { 'ubuntu': }

这就等价于执行:

  1. $ sudo docker pull ubuntu

注意,如果一个镜像名称早已不存在,它仅仅被下载。这将下载一个大的二进制,首次可能会花费一段时间。为此,这个定义大概5分钟的超时执行类型。注意,你可以移除镜像不再需要时:

  1. docker::image { 'ubuntu':
  2. ensure => 'absent',
  3. }

 容器

现在你有一个镜像,借此可以运行命令通过Docker管理的容器。

  1. docker::run { 'helloworld':
  2. image => 'ubuntu',
  3. command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
  4. }

这等价于运行如下命令:

  1. $ sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

Run也可以包含多个参数:

  1. docker::run { 'helloworld':
  2. image => 'ubuntu',
  3. command => '/bin/sh -c "while true; do echo hello world; sleep 1; done"',
  4. ports => ['4444', '4555'],
  5. volumes => ['/var/lib/couchdb', '/var/log'],
  6. volumes_from => '6446ea52fbc9',
  7. memory_limit => 10485760, # bytes
  8. username => 'example',
  9. hostname => 'example.com',
  10. env => ['FOO=BAR', 'FOO2=BAR2'],
  11. dns => ['8.8.8.8', '8.8.4.4'],
  12. }

说明:ports,env,dns和volumes属性被设置时不是一个单单的字符串,而是一个数组。