gpt4 book ai didi

docker - Knife 箱工作流程说明

转载 作者:行者123 更新时间:2023-12-02 20:29:03 27 4
gpt4 key购买 nike

我最近开始尝试学习如何使用 Chef 来管理 Docker 容器。目前,我正在尝试弄清楚如何使用 Knife 容器 gem 引导 Docker 容器,但我对这种场景的工作流程有点困惑。以下是我迄今为止为执行此操作所采取的步骤的高级描述:

  • 首先,为了了解这些技术如何协同工作,我配置了三个 Ubuntu 14.04 Virtualbox VM,一个用于 Chef 服务器,一个用于托管我的容器的节点,以及一个用于开发的工作站。这些机器的网络配置允许使用 NAT 网络接口(interface)和 Host-Only 接口(interface)连接到 Internet 和相互连接。
  • 我已经使用工作站 VM 中的 Knife 命令成功地自行引导了 Chef 节点,并且可以使用浏览器中的 Chef 管理控制台验证这一点。

  • 我的困惑是下一步该做什么来引导一个我想在上面提到的 Chef 节点上运行的容器。目前,我正在尝试从我从工作站启动的节点引导过程中运行的几个配方中进行 docker 安装和容器设置。以下是引导期间在节点上运行的配方之一的相关命令:
    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"

    这是加入数据包字符串数组后 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图像已构建,从我收到的错误消息中可以明显看出 python 不在 PATH 上。我从 Knife 容器的文档中看到,可以提供一个 Recipe 路径和配方运行列表,以便在容器本身上运行。我认为与我的 Dockerfile 执行相同任务的配方可能是一个更好的解决方案,但我不确定说明书路径应该是什么,因为我的说明书与 Chef 服务器而不是容器主机同步。

    任何关于我在这里缺少的见解或建议将不胜感激。

    最佳答案

    据我所知,与 Chef 容器一起使用的典型工作流程是从您的工作站生成 Dockerfile,配置 chef-server,运行列表......这将生成构建 Dockerimage 所需的文件(来自基本图像的 Dockerfile使用 Chef-client 以及与您的服务器同步所需的文件),然后您可以构建该容器。这不是假装将 Docker 安装到节点并在其中运行容器,而是假装 Chef 容器使用资源( Chef Recipe 和 Chef 服务器)构建 docker 镜像。推荐你看讲座Managing your container workflow with Chef来自 Chef 容器作者 Tom Duffield,阐明了它的工作流程。
    我认为这不是假装管理 Chef 节点中容器的执行。为此,您可以查看一些 Docker orchestration tools .

    关于docker - Knife 箱工作流程说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991493/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com