摘要:通過創(chuàng)建一個(gè)的來構(gòu)建一個(gè)應(yīng)用程序是非常容易的。我們將使用這個(gè)鏡像來作為我們新的應(yīng)用程序鏡像的基礎(chǔ)鏡像。現(xiàn)在我們需要為我們的應(yīng)用程序鏡像創(chuàng)建另外一個(gè)。你可以重復(fù)這個(gè)步驟安裝任何基于的應(yīng)用或者是基礎(chǔ)設(shè)施。
通過創(chuàng)建一個(gè) Docker 的 Dockerfile 來構(gòu)建一個(gè)應(yīng)用程序是非常容易的。但是如果你已經(jīng)有了大量的 Puppet 模塊(或者是 Chef cookbooks),你想把這些模塊用于構(gòu)建你的應(yīng)用程序,你應(yīng)該怎么做?我們將看到利用 Dockerfile1 構(gòu)建是多么的容易。
我們首先要構(gòu)建一個(gè) Docker 應(yīng)用鏡像來安裝 Puppet。我們將把 Tim Sharpe 的一個(gè)非常酷的工具 Librarian-Puppet 添加到鏡像中。Librarian-Puppet 是一個(gè) Puppet 模塊打包工具,你可以使用它從 GitHub 或者是 Puppet Labs Forge 選擇和安裝模塊。
讓我們創(chuàng)建一個(gè) Dockerfile 來構(gòu)建我們的 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
這個(gè) Dockerfile 使用基于 Ubuntu 的鏡像,然后通過 RubyGems 來安裝 Puppet 和 Librarian-Puppet。
我們運(yùn)行如下命令來構(gòu)建這個(gè)鏡像:
$ sudo docker build -t="jamtur01/puppetbase" .
我們已經(jīng)構(gòu)建了一個(gè)名為 jamtur01/puppetbase 的新鏡像。我們將使用這個(gè)鏡像來作為我們新的應(yīng)用程序鏡像的基礎(chǔ)鏡像。
下一步我們需要創(chuàng)建一個(gè) Puppetfile, Librarian-Puppet 使用它來安裝需要的 Puppet 模塊。如下例,我們將安裝一個(gè) Nginx 基礎(chǔ)服務(wù)。
mod "nginx", :git => "https://github.com/jfryman/puppet-nginx"
這個(gè) Puppetfile 告訴 Librarian-Puppet 從 GitHub 中安裝 puppet-nginx 模塊。
現(xiàn)在我們需要為我們的應(yīng)用程序鏡像創(chuàng)建另外一個(gè) 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"]
這個(gè) Dockerfile 使用我們剛剛構(gòu)建的 jamtur01/puppetbase 鏡像,它我們本地的 Puppetfile 添加到鏡像的 root 目錄,然后運(yùn)行 librarian-puppet install 來安裝要求的模塊(默認(rèn)安裝在 /modules 目錄)。
然后我們通過 puppet-nginx 模塊使用 puppet apply 命令來安裝 Nginx 。這個(gè)在本地主機(jī)上運(yùn)行 Puppet (i.e. 不需要安裝一個(gè) Puppet 客戶端)。
在這個(gè)鏡像中,我們安裝了 Nginx 。我們還可以安裝虛擬主機(jī)或者是一個(gè) Web 應(yīng)用程序或者是 Nginx 模塊支持的任何東西。
我們現(xiàn)在可以像這樣構(gòu)建我們的應(yīng)用程序鏡像:
$ sudo docker build -t="jamtur01/nginx" .
最后通過它啟動一個(gè)容器:
$ sudo docker run -P -d jamtur01/nginx fd461a1418c6
我們已經(jīng)啟動了一個(gè) ID 為 fd461a1418c6 的容器,在后臺運(yùn)行,并且告訴它暴露任意的端口,我們的例子中,我們在 Dockerfile 中暴露了 80 端口,讓我們檢查容器,并且看看其在 映射的 nginx 端口是。
$ sudo docker port fd461a1418c6 80 0.0.0.0:49158
現(xiàn)在讓我們訪問端口 49158,看 nginx 是否正在運(yùn)行。
歐耶!我們已經(jīng)通過 Puppet 安裝了 Nginx。你可以重復(fù)這個(gè)步驟安裝任何基于 Puppet 的應(yīng)用或者是基礎(chǔ)設(shè)施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??
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28095.html
摘要:,自動構(gòu)建,表示這個(gè)鏡像由的自動構(gòu)建流程構(gòu)建的。保存的目錄稱為上下文,會在構(gòu)建鏡像時(shí)將構(gòu)建的上下文和該上下文的文件和目錄上傳到守護(hù)進(jìn)程。可用略過緩存查看鏡像的每一層參考第一本書 docker入門 主要是docker使用命令 docker守護(hù)進(jìn)程 修改守護(hù)進(jìn)程的網(wǎng)絡(luò) sudo docker daemon -H tcp://0.0.0.0:2375 這條命令將docker守護(hù)進(jìn)程 //...
摘要:一個(gè)鏡像可以放到另一個(gè)京廣線的頂部,位于下面的鏡像稱為父鏡像,最底部的稱為基礎(chǔ)鏡像。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式的結(jié)構(gòu),由一系列指令一步步構(gòu)建處理。拉取鏡像使用命令啟動一個(gè)鏡像時(shí),會檢查本地是否存在該鏡像。 什么是鏡像 Docker鏡像時(shí)由文件系統(tǒng)疊加而成,最底端是一個(gè)引導(dǎo)文件系統(tǒng),即bootfs,這很像典型的Linux/Unix的引導(dǎo)文件系統(tǒng)。Docker用戶幾乎永遠(yuǎn)不會和引導(dǎo)...
摘要:企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運(yùn)營成本,其中一個(gè)最重要的因素是云計(jì)算基礎(chǔ)設(shè)施的自動化和配置。幸運(yùn)的是,有許多云計(jì)算基礎(chǔ)設(shè)施自動化工具可用于幫助加快流程。企業(yè)需要深入了解將工作負(fù)載遷移到公共云的正確步驟,并因此降低成本。云遷移不會自行發(fā)生,在遷移項(xiàng)目成功之前并不能完成工作和任務(wù)。企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運(yùn)營成本,其中一個(gè)最重要的因素是云計(jì)算基礎(chǔ)...
閱讀 1446·2021-09-10 11:27
閱讀 2401·2019-08-30 15:53
閱讀 1317·2019-08-30 13:10
閱讀 2969·2019-08-30 11:09
閱讀 1075·2019-08-29 17:23
閱讀 664·2019-08-29 17:05
閱讀 2943·2019-08-29 15:10
閱讀 2339·2019-08-29 13:22