成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Docker容器下部署Git的步驟

這篇文章主要講解了“Docker容器下部署Git的步驟”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Docker容器下部署Git的步驟”吧!

創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務昌江黎族,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

老辦法

我實在沒辦法在本地模擬一個完全真實的環(huán)境,但是我們只要看一下啟動一臺虛擬機使用的時間:

$time vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'squeeze64-ruby193'... ... [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. ...  real  1m32.052s

啟動一個鏡像超過了一分半鐘。那我要簡單修改下配置怎么辦?。磕俏乙炞C下可行性呢,那是不是又得重啟?又是一分半鐘了啊。

這分明就是個殘酷的懲罰嘛。

使用Docker

Docker到底有多么輕量級? 當你在Docker container中運行個進程時,你甚至都可能忘記這個進程竟然不是直接運行在主機上的。在下面的例子中,我運行一個叫“rails”的鏡像在Docker container中,那里是個Rails App (Dockerfile):

root@precise64:~# docker run rails 2013-08-26 20:21:14,600 CRIT Supervisor running as root (no user in config file) 2013-08-26 20:21:14,603 WARN Included extra file "/srv/docker-rails/Supervisorfile" during parsing 2013-08-26 20:21:14,736 INFO RPC interface 'supervisor' initialized 2013-08-26 20:21:14,740 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2013-08-26 20:21:14,754 INFO supervisord started with pid 1 2013-08-26 20:21:15,783 INFO spawned: 'rails' with pid 10 2013-08-26 20:21:16,841 INFO success: rails entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

開始container和啟動supervisor (這是負責開始Rails app的)一個只用了2秒

簡而言之,Docker絕對勝任在你的開發(fā)電腦上虛擬出一個完整的生產(chǎn)環(huán)境,而且很快。既然這么簡單,來,開動起來吧:我要徹底測試一下

構(gòu)建鏡像如此方便快捷 - 緩存萬歲!

Docker容器下部署Git的步驟

老方法

如果你想把從空鏡像到一個功能鏡像的構(gòu)建過程腳本化(例如:在Ubuntu上怎么安裝一個Rails stack),要是你不是經(jīng)常干這事,那么正確獲得所有的流,這絕對會是個痛苦的活兒??纯礊镽uby安裝依賴吧:

$time apt-get install -y -q ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 irb1.9.1 build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev Reading package lists... Building dependency tree... The following extra packages will be installed: .... Setting up libalgorithm-merge-perl (0.08-2) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking place  real 1m22.470s

然后,你想裝了NodeJS的依賴,但是忘了給apt添加源了:

$apt-get install -y nodejs ... E: Unable to locate package nodejs

解決了源的問題后,你得確認你的腳本在新鏡像中會不會有問題。那么你需要重裝Ruby,好吧,又要浪費82秒了。正是神煩。

使用Docker

在Docker中,是把構(gòu)建鏡像的步驟放到Dockerfile. Dockerfiles是非常容易閱讀的,因為你根本不需要學習DSL - 這就是些你輸入時記錄下來的基本命令。***次安裝Ruby會有點麻煩,但是讓我們看看,通過Dockerfile來構(gòu)建余下的鏡像會發(fā)生什么:

  1. FROM ubuntu:12.04 

  2. RUN apt-get update 

  3.  

  4. ## MySQL 

  5. RUN apt-get install -y -q mysql-client libmysqlclient-dev 

  6.  

  7. ## RUBY 

  8. RUN apt-get install -y -q ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 irb1.9.1 build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev

root@precise64:/# time docker build -t="dlite/appserver" . Uploading context 92160 bytes Step 1 : FROM ubuntu:12.04  ---> 8dbd9e392a96 Step 2 : RUN apt-get update  ---> Using cache  ---> b55e9ee7b959 Step 3 : RUN apt-get install -y -q mysql-client libmysqlclient-dev  ---> Using cache  ---> dc92be6158b0 Step 4 : RUN apt-get install -y -q ruby1.9.1 ruby1.9.1-dev rubygems1.9.1 irb1.9.1 build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev  ---> Using cache  ---> 7038022227c0 Successfully built 7038022227c0  real    0m0.848s

部署鏡像, 別更新基礎(chǔ)環(huán)境

老辦法

像許多其他部署一樣,Scout也使用長期運行的虛擬機。我們通過Puppet來更新基礎(chǔ)環(huán)境,但是, 這經(jīng)常比我們想象得要痛苦:

  • 如果我們要更新stack, Puppet將運行虛擬機然后更新。這將花費很長時間-即使只是一小部分的stack需要更新,但是Puppet仍然會檢查全部。

  • 部署過程中也可能有問題。如果我們正在安裝Memcached,突然網(wǎng)絡(luò)中斷了一小下,那么apt-get install memcached的指令可能就會無效了。

  • 回滾主要變化,這也時常不是想象中那么順利(像更新Ruby版本).

這些都是Puppet's的毛病 - 像Puppet或者Chef這樣的工具是非常重要,特別當你有著一些長時間運行的虛擬機,這些虛擬機可能隨著時間的推移出現(xiàn)不一致的情況,那么這些工具就更重要了。

使用Docker

部署鏡像 - 不用修改存在的虛擬機。你可以100%確保,本地運行什么,相應的生產(chǎn)環(huán)境就會運行什么。

但是鏡像很大,對嗎?不要整個Docker-記住containers不是運行在自己的操作系統(tǒng)上的,還有我們使用的是聯(lián)合文件系統(tǒng)。當我們對于鏡像做出改變時,我們只需要在上面添加新的層。

例如,我們安裝Memcached在app服務器上。我們構(gòu)建了一個新的鏡像。我會標注asdlite/appserver-memcached,dliteis是我的index.docker.io用戶名,這是基于dite/appserver鏡像的。

root@precise64:/# time docker build -t="dlite/appserver-memcached" . Uploading context 92160 bytes Step 1 : FROM appserver  ---> 8dbd9e392a96 Step 2 : RUN apt-get update  ---> Using cache  ---> b55e9ee7b959 Step 3 : RUN apt-get install -y -q memcached  ---> Running in 2a2a689daee3 Reading package lists... Building dependency tree... ... Starting memcached: memcached. Processing triggers for libc-bin ... ldconfig deferred processing now taking place  ---> 2a2a689daee3 Successfully built 2a2a689daee3  real    0m13.289s user    0m0.132s

只要13秒就能安裝好Memcached,這是因為之前的Dockerfile被緩存了,我愛這種速度的感覺。

我會上傳和提交這些:

root@precise64:/# time docker push dlite/appserver-memcached The push refers to a repository [dlite/appserver-memcached] (len: 1) Processing checksums Sending image list Pushing repository dlite/appserver-memcached (1 tags) Pushing 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c Image 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c already pushed, skipping ... Pushing tags for rev [ad8f8a3809afcf0e2cff1af93a8c29275a847609b05b20f7b6d2a5cbd32ff0d8] on {https://registry-1.docker.io/v1/repositories/dlite/appserver-memcached/tags/latest}  real    0m28.710s

在生產(chǎn)環(huán)境中的機器上,我把鏡像下載下來:

root@prod:/# time docker pull dlite/appserver-memcached Pulling repository dlite/appserver-memcached Pulling image ad8f8a3809afcf0e2cff1af93a8c29275a847609b05b20f7b6d2a5cbd32ff0d8 (latest) from dlite/appserver-memcached  real    0m15.749s

只用了15秒就獲得了dlite/appserver-memachedimage。注意那個鏡像只有10MB大小,使用app服務器鏡像作為基礎(chǔ)鏡像:

root@precise64:~# docker images REPOSITORY            TAG                 ID                  CREATED             SIZE appserver             latest              7038022227c0        3 days ago          78.66 MB (virtual 427.9 MB) appserver-memcached   latest              77dc850dcccc        16 minutes ago      10.19 MB (virtual 438.1 MB)

我們沒有必要將整個Memcached鏡像都下載下來, 只要將Memcached鏡像中的改變添加到dlite/appserver鏡像中。

絕大多數(shù)時間,我們做出的改變會小得多。所以下載一個新鏡像會更快。

這些會有很大的作用:

  • 開始新的Docker containers是非??斓?/p>

  • 上傳+下載新的Docker鏡像要輕量級的

并非要改變現(xiàn)在運行的虛擬機,我們只是開始新的containers,停止舊的containers.

Docker容器下部署Git的步驟

的確震驚! 這意味著我不需要擔心一致性問題 -  我們不會修改運行的虛擬機,只是開始新的containers。這意味著可以輕松回滾!Memcached失敗了?停止運行 dlite/appserver-memcached的container,開始一個新container運行dlite/appserver鏡像。

不足之處

在短暫的containers上工作,這會導致一系列新問題- 分布式配置 / 協(xié)調(diào)和服務發(fā)現(xiàn):

  • 當一個新的app服務器containers開始后,我們改如何更新HAProxy配置?

  • 當一個新的數(shù)據(jù)庫container開始后,app服務器應該如何與數(shù)據(jù)container來通信?

  • 如何跨越Docker宿主機器通信?

感謝各位的閱讀,以上就是“Docker容器下部署Git的步驟”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Docker容器下部署Git的步驟這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站題目:Docker容器下部署Git的步驟
標題路徑:http://jinyejixie.com/article28/iiccjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)定制網(wǎng)站、網(wǎng)站制作外貿(mào)建站、網(wǎng)站排名品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
津市市| 南岸区| 伊金霍洛旗| 丰台区| 淳化县| 贡山| 修武县| 岢岚县| 海口市| 阿瓦提县| 呼玛县| 东莞市| 信丰县| 普兰店市| 衡南县| 湖口县| 密山市| 理塘县| 富顺县| 吴江市| 民勤县| 湖南省| 阜新市| 平山县| 郓城县| 漠河县| 广河县| 霸州市| 枝江市| 嘉黎县| 海门市| 台前县| 来凤县| 高州市| 喜德县| 昌吉市| 阿勒泰市| 姜堰市| 文成县| 泰州市| 安泽县|