摘要:通过创建一个的来构建一个应用程序是非常容易的。我们将使用这个镜像来作为我们新的应用程序镜像的基础镜像。现在我们需要为我们的应用程序镜像创建另外一个。你可以重复这个步骤安装任何基于的应用或者是基础设施。
通过创建一个 Docker 的 Dockerfile 来构建一个应用程序是非常容易的。但是如果你已经有了大量的 Puppet 模块(或者是 Chef cookbooks),你想把这些模块用于构建你的应用程序,你应该怎么做?我们将看到利用 Dockerfile1 构建是多么的容易。
我们首先要构建一个 Docker 应用镜像来安装 Puppet。我们将把 Tim Sharpe 的一个非常酷的工具 Librarian-Puppet 添加到镜像中。Librarian-Puppet 是一个 Puppet 模块打包工具,你可以使用它从 GitHub 或者是 Puppet Labs Forge 选择和安装模块。
让我们创建一个 Dockerfile 来构建我们的 Puppet2 镜像。
FROM ubuntu:12.10 MAINTAINER James Turnbull "james@lovedthanlost.net" RUN apt-get -y update RUN apt-get -y install rubygems RUN echo "gem: --no-ri --no-rdoc" > ~/.gemrc RUN gem install puppet librarian-puppet
这个 Dockerfile 使用基于 Ubuntu 的镜像,然后通过 RubyGems 来安装 Puppet 和 Librarian-Puppet。
我们运行如下命令来构建这个镜像:
$ sudo docker build -t="jamtur01/puppetbase" .
我们已经构建了一个名为 jamtur01/puppetbase 的新镜像。我们将使用这个镜像来作为我们新的应用程序镜像的基础镜像。
下一步我们需要创建一个 Puppetfile, Librarian-Puppet 使用它来安装需要的 Puppet 模块。如下例,我们将安装一个 Nginx 基础服务。
mod "nginx", :git => "https://github.com/jfryman/puppet-nginx"
这个 Puppetfile 告诉 Librarian-Puppet 从 GitHub 中安装 puppet-nginx 模块。
现在我们需要为我们的应用程序镜像创建另外一个 Dockerfile。
FROM jamtur01/puppetbase MAINTAINER James Turnbull "james@lovedthanlost.net" RUN apt-get -y -q install wget git-core ADD Puppetfile / RUN librarian-puppet install RUN puppet apply --modulepath=/modules -e "class { "nginx": }" RUN echo "daemon off;" >> /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx"]
这个 Dockerfile 使用我们刚刚构建的 jamtur01/puppetbase 镜像,它我们本地的 Puppetfile 添加到镜像的 root 目录,然后运行 librarian-puppet install 来安装要求的模块(默认安装在 /modules 目录)。
然后我们通过 puppet-nginx 模块使用 puppet apply 命令来安装 Nginx 。这个在本地主机上运行 Puppet (i.e. 不需要安装一个 Puppet 客户端)。
在这个镜像中,我们安装了 Nginx 。我们还可以安装虚拟主机或者是一个 Web 应用程序或者是 Nginx 模块支持的任何东西。
我们现在可以像这样构建我们的应用程序镜像:
$ sudo docker build -t="jamtur01/nginx" .
最后通过它启动一个容器:
$ sudo docker run -P -d jamtur01/nginx fd461a1418c6
我们已经启动了一个 ID 为 fd461a1418c6 的容器,在后台运行,并且告诉它暴露任意的端口,我们的例子中,我们在 Dockerfile 中暴露了 80 端口,让我们检查容器,并且看看其在 映射的 nginx 端口是。
$ sudo docker port fd461a1418c6 80 0.0.0.0:49158
现在让我们访问端口 49158,看 nginx 是否正在运行。
欧耶!我们已经通过 Puppet 安装了 Nginx。你可以重复这个步骤安装任何基于 Puppet 的应用或者是基础设施3。
注:本文的原作者为 JAMES TURNBULL,本文的原文地址为 Building Puppet-based applications inside Docker
This is a somewhat short-term hacky implementation. When Docker is more pluggable this will be a lot easier. Expect to see that sort of plugin support in the 1.0 release ↩
We could easy do the same thing with Chef too ↩
For other thoughts on Docker and CM see this ↩
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28095.html
摘要:一个镜像可以放到另一个京广线的顶部,位于下面的镜像称为父镜像,最底部的称为基础镜像。镜像是基于联合文件系统的一种层式的结构,由一系列指令一步步构建处理。拉取镜像使用命令启动一个镜像时,会检查本地是否存在该镜像。 什么是镜像 Docker镜像时由文件系统叠加而成,最底端是一个引导文件系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导...
摘要:企业将业务迁移到云平台的最大好处之一是可以降低工作和运营成本,其中一个最重要的因素是云计算基础设施的自动化和配置。幸运的是,有许多云计算基础设施自动化工具可用于帮助加快流程。企业需要深入了解将工作负载迁移到公共云的正确步骤,并因此降低成本。云迁移不会自行发生,在迁移项目成功之前并不能完成工作和任务。企业将业务迁移到云平台的最大好处之一是可以降低工作和运营成本,其中一个最重要的因素是云计算基础...
阅读 1445·2021-09-10 11:27
阅读 2399·2019-08-30 15:53
阅读 1316·2019-08-30 13:10
阅读 2967·2019-08-30 11:09
阅读 1073·2019-08-29 17:23
阅读 662·2019-08-29 17:05
阅读 2943·2019-08-29 15:10
阅读 2338·2019-08-29 13:22