成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

容器: 讓“基礎(chǔ)設(shè)施即代碼”更容易

null1145 / 2699人閱讀

摘要:容器在基礎(chǔ)設(shè)施即代碼中有什么意義一句話概括的話,容器意味著一切。正是為了應(yīng)對這一挑戰(zhàn),基礎(chǔ)設(shè)施即代碼作為一個解決方案便誕生了。這是基礎(chǔ)設(shè)施即代碼最簡單的形式。

容器在“基礎(chǔ)設(shè)施即代碼(Infrastructure as Code)”中有什么意義?

一句話概括的話,容器意味著一切。

為什么這么說呢?當你在比較單體應(yīng)用和微服務(wù)時,一定會有一些權(quán)衡和取舍。一方面,從單體模型轉(zhuǎn)移到微服務(wù)模型,能夠?qū)⑦M程分離成獨立的工作單元。這使得開發(fā)者們可以將注意力放在單一功能上,并且有助于測試和擴展。另一方面,由于將所有的東西都分成了多帶帶的服務(wù),過去你只需管理一個單一部署單元的基礎(chǔ)設(shè)施,現(xiàn)在你卻必須管理每一個服務(wù)的基礎(chǔ)設(shè)施。正是為了應(yīng)對這一挑戰(zhàn),“基礎(chǔ)設(shè)施即代碼”作為一個解決方案便誕生了。

容器技術(shù)已經(jīng)存在一段時間了,它以不同的形式實現(xiàn)且已取得不同程度的成功。這項技術(shù)從上世紀80年代初的chroot開始,并在之后帶來了如Virtuozzo和Sysjail這樣形式的產(chǎn)品。直到2013年Docker的誕生和其后的迅猛發(fā)展,一切才化零為整,才真正開始深刻影響了應(yīng)用程序在容器模型中的開發(fā)、測試和部署。

“基礎(chǔ)設(shè)施即代碼”的實踐,和Docker容器一起,象征著一個最具顛覆性和創(chuàng)新性的改變,它影響了我們今天開發(fā)和發(fā)布軟件的過程。

什么是“基礎(chǔ)設(shè)施即代碼”(IaC)?

在深入探討IaC及它和容器的關(guān)系之前,先看看IaC的具體含義吧。IaC指的是開發(fā)應(yīng)用程序本身的同時,對硬件和操作系統(tǒng)需求的供應(yīng)編寫腳本的實踐。通常,管理這些腳本的方式和軟件代碼庫類似,包括版本控制和自動化測試。

當正確執(zhí)行時,腳本將代替管理員登陸新機器并進行配置。這些腳本描述了新機器的理想狀態(tài),并會執(zhí)行必要的步驟來配置機器,以實現(xiàn)這一狀態(tài)。

“基礎(chǔ)設(shè)施即代碼”帶來的核心便利

IaC旨在利用系統(tǒng)配置來緩解最常見的痛點,特別是以前配置一個新環(huán)境通常需要花費大量的時間。每一個環(huán)境都需要多帶帶配置,且如果某處出現(xiàn)錯誤,通常需重新進行整個過程。IaC消除了這些痛點,并向開發(fā)者和運維人員提供了以下額外的便利:

重新使用常見的腳本變得相對簡單了。

整個供應(yīng)過程可實現(xiàn)自動化,連供應(yīng)硬件都可以作為持續(xù)交付過程的一部分。

版本控制,可以根據(jù)需要測試和回滾較新的配置。

同行審查和腳本強化。不需手動地從文檔或內(nèi)存中配置,就可以對腳本進行審查、更新和持續(xù)改進。

文檔是自動的,因為本質(zhì)上它就是腳本本身。

過程可以被測試。

容器,將“基礎(chǔ)設(shè)施即代碼”帶向新高度

作為開發(fā)者,我想我們都遇到過諸如“我不知道啊,反正它在我的機器上工作!”這樣的情況。往好處說,這是一種詼諧有趣的說法;但往壞處說,它代表了我們每天都要處理的一個很大的問題。Docker這一革新性的技術(shù)不僅有效消除了開發(fā)者的這些擔憂,它還使得IaC在開發(fā)過程中成為一個核心組件。

為了更好地說明這一點,讓我們想象一個已經(jīng)Docker化的Web應(yīng)用,它有簡單的UI界面。該應(yīng)用將有一個類似于如下所示的Dockerfile,具體說明了包含該應(yīng)用的容器的配置信息。

FROM ubuntu:12.04

# Install dependencies
RUN apt-get update -y && apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql

# Install app
RUN rm -rf /var/www/*
ADD src /var/www

# Configure apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

如果你熟悉Docker,這是一個相當?shù)湫秃秃唵蔚腄ockerfile,你應(yīng)該已經(jīng)知道了它是什么。如果你不熟悉Dockerfile,那么可以理解為,這個文件將用于創(chuàng)建一個Docker鏡像,它本質(zhì)上是一個用來創(chuàng)建容器的模板。Docker容器創(chuàng)建完畢后,鏡像將用于構(gòu)建容器,于是一個自包含的應(yīng)用程序就這么產(chǎn)生了。從開發(fā)工作站到高可用云集群,它可以在已經(jīng)將其實例化的任何機器上使用。

我們看一下文件中的幾個關(guān)鍵參數(shù),并看看它們在過程中實現(xiàn)了什么:

FROM ubuntu:12.04

這一行是從Docker Hub中拉取一個Ubuntu Docker鏡像,作為新容器的基礎(chǔ)。Docker Hub是主要的Docker鏡像在線倉庫。如果你訪問Docker Hub并在其中搜索這個鏡像,你就能找到Ubuntu鏡像倉庫了。這是一個官方鏡像,是由Docker支持的專門團隊負責管理的。使用該鏡像的好處是,當你的底層技術(shù)出現(xiàn)問題時,很有可能已經(jīng)有人開發(fā)出了修復(fù)補丁并實現(xiàn)了它,并且你所需要做的只是更新你的Dockerfile到新版本,重建你的鏡像,并再一次測試和部署你的容器。

Dockerfile中剩下的幾行將使用apt-get在基礎(chǔ)鏡像上安裝各種軟件包。將應(yīng)用程序的源添加到/var/www目錄,配置Apache,然后將容器的公開端口設(shè)置為端口80。

最后,當容器搭建好后運行CMD指令,這將初始化Apache服務(wù)器,打開它以接收http請求。

這是“基礎(chǔ)設(shè)施即代碼”最簡單的形式。這就是它的全部。

此時,假如你已經(jīng)在工作站上安裝并運行Docker了,你可以從Dockerfile所在的目錄中執(zhí)行以下指令:

$ docker build -t my_demo_application:v0.1

Docker將為你構(gòu)建鏡像,將其命名為my_demo_application并加標簽v0.1,v0.1實際是一個版本編號。鏡像創(chuàng)建后,您可以使用以下命令獲取該鏡像,并使用該鏡像創(chuàng)建容器。

$ docker run -d my_demo_application:v0.1

就像這樣,你就可以在本地機器上運行你的應(yīng)用程序,或者在你選擇的任何硬件上運行它。

結(jié)語

一份簡單的Dockerfile,可以檢查你的源代碼,指定應(yīng)用程序的環(huán)境、配置和訪問路徑,這就是Docker和“基礎(chǔ)設(shè)施即代碼”的最簡單形式。同時你可以使用docker compose來定義多層次服務(wù)的組合應(yīng)用,每個服務(wù)都包含一個獨立的Dockerfile或者導(dǎo)入Docker倉庫的一個鏡像。你還可以使用docker compose的增強版本rancher compose,這是微服務(wù)部署利器,可以讓我們更加便利得玩轉(zhuǎn)rolling upgrade等高級特性。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26816.html

相關(guān)文章

  • 【譯】基礎(chǔ)設(shè)施代碼

    摘要:原文基礎(chǔ)設(shè)施即代碼是一種像其他軟件系統(tǒng)一樣通過源代碼定義計算資源和網(wǎng)絡(luò)基礎(chǔ)設(shè)施的方法。當變更基礎(chǔ)設(shè)施時頻率能減少難度。基礎(chǔ)設(shè)施即代碼技術(shù)可以用來管理大集群服務(wù)器,無論是配置服務(wù)器和處理它們?nèi)绾芜M行交互。 原文https://martinfowler.com/blik... 基礎(chǔ)設(shè)施即代碼是一種像其他軟件系統(tǒng)一樣通過源代碼定義計算資源和網(wǎng)絡(luò)基礎(chǔ)設(shè)施的方法。代碼可以被用來進行評審和反復(fù)構(gòu)建...

    idealcn 評論0 收藏0
  • 使用Kubernetes你需要知道的硬道理

    摘要:是谷歌內(nèi)部為解決這個問題所做的工作的產(chǎn)物,它為管理容器如何在整個集群中運行提供了一個單一的框架。在云中使用服務(wù)在許多云中作為標準問題項提供,盡管它在谷歌云平臺,中最突出地表現(xiàn)為本地特性。使用,運行控制平面,將重點部署將用于所需配置的容器。每一項創(chuàng)新都會帶來新的復(fù)雜性。容器使以一種方便的、可移植的形式打包和運行應(yīng)用程序成為可能,但至少要說以規(guī)模管理容器是一個挑戰(zhàn)。Kubernetes是谷歌內(nèi)部...

    fyber 評論0 收藏0
  • 如何選擇云計算基礎(chǔ)設(shè)施自動化的最佳工具

    摘要:企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)設(shè)施的自動化和配置。幸運的是,有許多云計算基礎(chǔ)設(shè)施自動化工具可用于幫助加快流程。企業(yè)需要深入了解將工作負載遷移到公共云的正確步驟,并因此降低成本。云遷移不會自行發(fā)生,在遷移項目成功之前并不能完成工作和任務(wù)。企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)...

    microelec 評論0 收藏0
  • 如何選擇云計算基礎(chǔ)設(shè)施自動化的最佳工具?

    摘要:企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)設(shè)施的自動化和配置。幸運的是,有許多云計算基礎(chǔ)設(shè)施自動化工具可用于幫助加快流程。企業(yè)需要深入了解將工作負載遷移到公共云的正確步驟,并因此降低成本。云遷移不會自行發(fā)生,在遷移項目成功之前并不能完成工作和任務(wù)。企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)...

    KitorinZero 評論0 收藏0
  • 混合云人才目前需要具備的7種技能

    摘要:正如混合云這一術(shù)語所暗示的那樣,云計算現(xiàn)在需要混合的人工技能。混合云目前在企業(yè)中的知名度很高,因此該領(lǐng)域的專業(yè)人士應(yīng)具備強大的溝通能力,以便能夠解釋混合云的商業(yè)價值和任何因遷移到混合云而帶來的流程改進環(huán)境。隨著混合云的普及,企業(yè)對IT專業(yè)人員的需求也在不斷增長,他們可以有效地設(shè)計、實施和優(yōu)化這種現(xiàn)代計算方法。正如混合云這一術(shù)語所暗示的那樣,云計算現(xiàn)在需要混合的人工技能。如果IT專業(yè)人員從來沒...

    atinosun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<