我正在尝试使用此链接提供的食谱定义一个厨师食谱来安装docker:https://supermarket.chef.io/cookbooks/docker#readme
我正在使用Berkshelf,所以我把这行放在Berkfile上
cookbook 'docker', '~> 2.9.6'
,这在metadata.db
上depends "docker"
我的食谱如下
include_recipe 'docker::docker_service'
include_recipe 'docker::docker_image'
include_recipe 'docker::docker_container'
docker_service 'default' do
action [:create, :start]
end
但是当我尝试运行厨房时,我得到以下错误:
ERROR: could not find recipe docker_service for cookbook docker
但如果我查看我的berkshelf存储库,那么食谱就在那里:
$ ls ~/.berkshelf/cookbooks/docker-2.9.6/libraries/ | grep docker_service.rb
docker_service.rb
我做错了什么?
谢谢, 米歇尔。
答案 0 :(得分:4)
如@coderanger和@NilsLandt所述,您需要编写自己的食谱来安装docker,并且只需调用docker食谱提供的资源。
由厨师生成的食谱和#34;命令
├── Berksfile
├── chefignore
├── metadata.rb
├── README.md
├── recipes
│ └── default.rb
└── test
└── integration
├── default
│ └── serverspec
│ └── default_spec.rb
└── helpers
└── serverspec
└── spec_helper.rb
添加" apt"和#34;码头工人"烹饪书作为依赖
name 'docker_demo'
maintainer 'Mark O''Connor'
maintainer_email 'you@example.com'
license 'all_rights'
description 'Installs/Configures docker_demo'
long_description 'Installs/Configures docker_demo'
version '0.1.0'
depends 'apt'
depends 'docker'
只需使用" docker_service"用于创建docker服务的资源。 "创建"动作将安装Docker。
#
# Cookbook Name:: docker_demo
# Recipe:: default
#
# Copyright (c) 2016 The Authors, All Rights Reserved.
include_recipe 'apt'
docker_service 'default' do
action [:create, :start]
end
验证docker
安装的一组测试require 'spec_helper'
describe file('/usr/bin/docker') do
it { should be_file }
it { should be_executable }
end
describe command('/usr/bin/docker version') do
its(:stdout) { should match /Version: 1.12.1/ }
end
答案 1 :(得分:2)
docker cookbook没有提供任何食谱,这就是include_recipe
来电失败的原因。
相反,您只需使用资源,就像您已使用docker_service
资源一样。
当您删除三条include_recipe
行时,您的食谱应该会运行。
答案 2 :(得分:1)
src/test/resources/logback-test.xml
是资源,而不是食谱。有关示例用法,请参阅自述文件,但总体思路是您需要编写自己的包装器手册,该手册使用提供的自定义资源。