亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

構(gòu)建Docker鏡像兩種方式的比較-Dockerfile方式和S2I方式

WelliJhon / 2604人閱讀

摘要:是一套工具包和工作流程,用于從源代碼構(gòu)建重復(fù)性鏡像。由上圖可以看出,方式的構(gòu)建過(guò)程比較直接根據(jù)定義的步驟,讀取源代碼,生成鏡像成品。源代碼相關(guān)編譯源代碼部署二進(jìn)制程序定義服務(wù)啟動(dòng)方式等。

前言

寫Dockerfile是構(gòu)建Docker鏡像最通常的方式,接觸過(guò)Docker的童鞋多少了解一些。前段時(shí)間研究OpenShift(paas的一種),發(fā)現(xiàn)了另外一種構(gòu)建Docker鏡像的方式:S2I。

S2I介紹

S2I是Source-to-Image的縮寫。

S2I是一套工具包和工作流程,用于從源代碼構(gòu)建重復(fù)性Docker鏡像。

S2I是一個(gè)框架,它使寫鏡像變得簡(jiǎn)單。它把程序源代碼作為輸入,生成一個(gè)運(yùn)行已組裝應(yīng)用程序的新鏡像并作為輸出。

S2I的詳細(xì)介紹以及使用方法可以參考以下官方文檔。本文就不復(fù)述(fan yi)了。

Source-To-Image (S2I)

S2I Requirements

How to Create an S2I Builder Image

兩種構(gòu)建方式的過(guò)程

Talk is Cheap, Show me the Picture.
先上圖。

源代碼只是構(gòu)建鏡像的多種輸入的一種,還有二進(jìn)制文件等其它輸入。鏡像構(gòu)建的過(guò)程也比較復(fù)雜。下圖是為了清晰地進(jìn)行對(duì)比,所以畫得簡(jiǎn)單一些。

由上圖可以看出,Dockerfile方式的構(gòu)建過(guò)程比較直接:

根據(jù)Dockerfile定義的步驟,讀取源代碼,生成鏡像(成品)。

而S2I方式的構(gòu)建過(guò)程比較“曲折”:

根據(jù)Dockerfile定義的步驟,準(zhǔn)備鏡像環(huán)境、讀取S2I腳本,構(gòu)建鏡像(中間)<又稱構(gòu)建器鏡像 Builder Image>。

基于上一步生成的鏡像(中間),讀取源代碼,根據(jù)S2I腳本定義的步驟編譯源代碼、部署二進(jìn)制程序、預(yù)備服務(wù)啟動(dòng),構(gòu)建鏡像(成品)。

從上述過(guò)程可以看出,S2I方式比Dockerfile方式多了一步,多了兩樣?xùn)|西:S2I腳本和鏡像(中間)。

S2I腳本介紹

S2I腳本有4種。

assemble: 負(fù)責(zé)構(gòu)建程序,即編譯、部署程序。

run: 負(fù)責(zé)啟動(dòng)應(yīng)用。

save-artifacts: 負(fù)責(zé)增量構(gòu)建(鏡像),目前尚未使用。

usage: 負(fù)責(zé)打印構(gòu)建器鏡像的使用說(shuō)明。

S2I方式的好處

關(guān)于引入S2I構(gòu)建鏡像的好處,書面類的描述可以參考官方文檔,這里談?wù)剬?shí)踐下來(lái)個(gè)人的感受和理解。

首先,要了解為什么要引入S2I。

如果一定要把構(gòu)建鏡像分為兩部分,可以分為

環(huán)境準(zhǔn)備

定義基礎(chǔ)鏡像;

安裝所需部件,如Maven、Java JDK;

拷貝/移動(dòng)文件/目錄;

定義用戶;

暴露端口等。

源代碼相關(guān)

編譯源代碼;

部署二進(jìn)制程序;

定義服務(wù)啟動(dòng)方式等。

引入S2I的目的就是為了分離這兩部分的工作。

其中環(huán)境準(zhǔn)備工作交給了構(gòu)建器鏡像,

構(gòu)建器鏡像一旦生成將保持不變,可理解為靜態(tài)部分。

而源代碼相關(guān)工作交給了S2I腳本。

在構(gòu)建鏡像(成品)過(guò)程中,S2I將根據(jù)S2I腳本定義的步驟進(jìn)行源代碼編譯、二進(jìn)制程序部署、服務(wù)啟動(dòng)預(yù)備,可以理解為動(dòng)態(tài)部分。

這樣的分離帶來(lái)了如下好處。

對(duì)于環(huán)境依賴相近、構(gòu)建部署啟動(dòng)過(guò)程相似的程序,由于有構(gòu)建器鏡像的存在,構(gòu)建過(guò)程不需要再次進(jìn)行環(huán)境準(zhǔn)備工作,從而節(jié)省了構(gòu)建鏡像(成品)的時(shí)間。

分工明確。構(gòu)建工作的分離允許應(yīng)用程序開發(fā)人員對(duì)他們的代碼進(jìn)行更改,而不用知道Dockerfile或Docker鏡像的細(xì)節(jié)。如果鏡像構(gòu)建交付給S2I或PaaS(platform as a service)平臺(tái),開發(fā)工程師不需要理解Docker來(lái)對(duì)項(xiàng)目作出貢獻(xiàn)。這在一個(gè)由很多人組成的企業(yè)環(huán)境中是非常有用的,這些人都有不同的專業(yè)方向,而且并不直接涉及到他們項(xiàng)目的構(gòu)建過(guò)程。

(注) 上述好處2引用了文章:使用Source-to-image(S2I)構(gòu)建鏡像的描述

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27182.html

相關(guān)文章

  • 自定義 OpenShift s2i 鏡像與模板——OracleJDK8

    摘要:自定義鏡像部分自定義鏡像部分安裝工具安裝工具工具官方下載工具解壓工具到查看版本初始化目錄結(jié)構(gòu)初始化目錄結(jié)構(gòu)筆者是在目錄下開始操作的,提前說(shuō)下免得讀者操作有誤。修改修改腳本只作啟動(dòng)功能,為了方便傳調(diào)優(yōu)參數(shù),定制了環(huán)境變量供使用。 本文目標(biāo) 由于 OpenShift 官方提供的鏡像與模板(OpenJDK8)不完全滿足業(yè)務(wù)需要: 不包含飛行記錄功能。只有 OpenJD...

    graf 評(píng)論0 收藏0
  • 技術(shù)干貨 | Docker容器中需要避免十種常見(jiàn)誤區(qū)

    摘要:第二具備輕量化特性容器的體積非常小巧。他們大多認(rèn)為自己應(yīng)該將應(yīng)用程序部署至當(dāng)前正在運(yùn)行的容器當(dāng)中。不要?jiǎng)?chuàng)建大型鏡像體積過(guò)大的鏡像會(huì)加大其發(fā)布難度??傮w來(lái)講,在向生產(chǎn)環(huán)境中部署容器時(shí),必須避免使用最新標(biāo)簽。 當(dāng)下最火爆的Docker,是一個(gè)開源的應(yīng)用容器引擎。大家已經(jīng)開始認(rèn)同并接受容器技術(shù),并意識(shí)到它能夠解決多種現(xiàn)實(shí)問(wèn)題并具備一系列無(wú)可比擬的優(yōu)勢(shì)。今天小數(shù)就和大家聊一聊容器技術(shù)的優(yōu)勢(shì)和誤...

    Gu_Yan 評(píng)論0 收藏0
  • Docker 容器十誡

    摘要:鑒于這一特征,用戶必須轉(zhuǎn)變他們使用以及管理容器時(shí)的心態(tài)。不要將應(yīng)用分開發(fā)布有些人會(huì)將容器視為虛擬機(jī),他們中的大部分人認(rèn)為,應(yīng)該在現(xiàn)有的運(yùn)行容器中部署應(yīng)用。不要以用戶運(yùn)行進(jìn)程默認(rèn)情況下,容器以權(quán)限運(yùn)行。 【編者按】本文作者為 Rafael Benevides,主要介紹使用 Docker 容器時(shí)應(yīng)該注意的十個(gè)陷阱。文章系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn),以下為正文。 sho...

    elisa.yang 評(píng)論0 收藏0
  • 30 分鐘快速入門 Docker 教程

    摘要:分鐘快速入門教程一歡迎來(lái)到世界與虛擬化在沒(méi)有的時(shí)代,我們會(huì)使用硬件虛擬化虛擬機(jī)以提供隔離。倉(cāng)庫(kù)分為公開倉(cāng)庫(kù)和私有倉(cāng)庫(kù),最大的公開倉(cāng)庫(kù)是官方倉(cāng)庫(kù),國(guó)內(nèi)的公開倉(cāng)庫(kù)也有很多選擇,例如阿里云等。 30 分鐘快速入門 Docker 教程 一、歡迎來(lái)到 Docker 世界 1. Docker 與虛擬化 在沒(méi)有 Docker 的時(shí)代,我們會(huì)使用硬件虛擬化(虛擬機(jī))以提供隔離。這里,虛擬機(jī)通過(guò)在操作系...

    LucasTwilight 評(píng)論0 收藏0
  • Docker學(xué)習(xí)與應(yīng)用(二)_使用Docker

    摘要:在前一篇文章學(xué)習(xí)與和應(yīng)用一初步認(rèn)識(shí)中,我們初步介紹了解決了什么問(wèn)題,容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了的幾大核心概念鏡像容器和倉(cāng)庫(kù)。針對(duì)上述問(wèn)題,提供了的,通過(guò)使用指令配置的方式來(lái)創(chuàng)建鏡像。 在前一篇文章 Docker學(xué)習(xí)與和應(yīng)用(一)_初步認(rèn)識(shí)中,我們初步介紹了Docker解決了什么問(wèn)題,Docker容器化技術(shù)與傳統(tǒng)的虛擬化方式的區(qū)別,以及簡(jiǎn)要介紹了Docker的幾大...

    Ocean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<