刀容器工作stream程的澄清

我最近开始尝试学习如何使用Chef来pipe理Docker容器。 目前,我正试图弄清楚如何使用knife-container gem来引导一个Docker容器,但是我对这个场景的工作stream程有点困惑。 以下是我迄今为止所采取的步骤的高级描述:

  • 首先,为了了解这些技术如何协同工作,我configuration了三个Ubuntu 14.04 Virtualbox虚拟机,一个用于Chef Server,另一个用于托pipe我的容器的节点,以及一个用于开发的工作站。 这些机器的networkingconfiguration允许使用NATnetworking接口和仅主机接口连接到互联网和彼此。
  • 我已经使用我的工作站虚拟机中的刀命令自己成功引导了Chef节点,并且可以在浏览器中使用Chefpipe理控制台validation这一点。

我的困惑是关于下一步做什么来启动一个我想在上面提到的Chef节点上运行的容器。 目前,我正在尝试从一些在从工作站启动的节点引导过程中运行的食谱中执行泊坞窗安装和容器设置。 以下是引导期间在节点上运行的其中一个配方的相关命令:

dockerfile = data_bag_item('dockerfiles', 'ubuntu-dockerfile')["script"].join() ... execute "knife container docker init test_app -f chef/ubuntu-14.04" file "/var/chef/dockerfiles/test_app/Dockerfile" do content dockerfile action :create end ... execute "knife container build test_app -d /var/chef/dockerfiles" execute "docker run -d -p 80:8000 -v /etc/chef /etc/chef/secure test_app python test_app/manage.py runserver 0.0.0.0:8000" 

以下是数据包string数组join后Dockerfile的外观:

 FROM chef/ubuntu-14.04 RUN chef-init --bootstrap RUN rm -rf /etc/chef/secure/* RUN apt-get -qq update RUN apt-get -qq install build-essential python-django RUN apt-get clean ENV DJANGO_PATH /usr/lib/python2.7/dist-packages/django/bin RUN chmod u+x $DJANGO_PATH/django-admin.py RUN $DJANGO_PATH/django-admin.py startproject test RUN chmod u+x test/manage.py EXPOSE 8000 ENTRYPOINT ["chef-init", "--onboot"] 

第一个问题是,即使我在配方中对Dockerfile所做的更改已经成功写入/ var / chef / dockerfiles / test_app / Dockerfile文件,那么当新的Docker图像是build立的,这是显而易见的错误消息,我收到,说py​​thon不在PATH上。 我从刀容器的文档中已经看到,可以提供在容器本身上运行的食谱path和配方运行列表。 我在想,执行与我的Dockerfile相同的任务的配方可能是一个更好的解决scheme,但是我不确定cookbook的path应该是什么,因为我的菜谱和chef服务器同步,而不是容器主机。

任何有关我在这里失踪的见解或build议将不胜感激。

据我所知,Chef容器使用的典型工作stream程是从工作站生成Dockerfile,configurationchef-server,run-list …这将生成构buildDockerImage所需的文件(Dockerfile从基本映像与厨师客户端和需要与您的服务器同步的文件),然后你可以build立该容器。 这不是假装将Docker安装到节点并在其中运行一个容器,但厨师容器假装使用资源(厨师食谱和厨师服务器)build立docker图像。 我build议你看看厨师容器制作人汤姆·杜菲尔德(Tom Duffield)的厨师pipe理你的容器工作stream程 ,以澄清它的工作stream程。 我认为这不是假装pipe理厨师节点中容器的执行。 为此,您可以检查一些Docker业务stream程工具 。