成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優(yōu)化Docker鏡像,加速應(yīng)用部署,教你幾個(gè)小竅門

開發(fā) 前端
Docker 鏡像可以看作是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。

 Docker 包含三個(gè)基本概念,分別是鏡像(Image)、容器(Container)和倉庫(Repository)。Docker 鏡像可以看作是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像是 Docker 運(yùn)行容器的前提,是Docker的核心。要想利用Docker鏡像快速構(gòu)建一個(gè)高性能的應(yīng)用,首先你要制作一個(gè)好的鏡像。

如何制作一個(gè)好的鏡像?下面教你幾個(gè)小訣竅。

一、明確指定鏡像版本,管理更方便

為了讓版本管理起來更方便,應(yīng)用部署速度更快,在創(chuàng)建鏡像的過程中,建議工程師們明確指定包含版本或者其他輔助信息的tag。如果不指定鏡像tag,默認(rèn)會使用latest。這樣,每次啟動應(yīng)用實(shí)例時(shí),都需要去鏡像倉庫檢查鏡像是否更新。這種方式不利于版本管理,對應(yīng)用啟動速度也有一定影響。

二、減小鏡像體積

1、使用alpine版本的基礎(chǔ)鏡像,來減小鏡像體積,以保證部署和擴(kuò)容速度。

alpine是一個(gè)高度精簡但又包含了基本工具的輕量級Linux發(fā)行版,本身的Docker鏡像只有4~5M大小,各開發(fā)語言和框架都有基于alpine制作的基礎(chǔ)鏡像。因此,在開發(fā)自己應(yīng)用的鏡像時(shí),要選擇這些鏡像作為基礎(chǔ)鏡像,這樣可以大大減小鏡像的體積。

如下是各種語言對應(yīng)的基礎(chǔ)鏡像:

  • Java(Spring Boot): - openjdk:8-jdk-alpine,openjdk:8-jre-alpine等
  • Java(Tomcat) - tomcat:8.5-alpine等
  • Nodejs - node:9-alpine, node:8-alpine等
  • Python - python:3-alpine, python:2-alpine等
  • PHP - 基于php:7-fpm-alpine,php:5-fpm-alpine等鏡像添加nginx,參考https://hub.docker.com/r/trafex/alpine-nginx-php7/
  • Ruby:ruby:2-alpine等
  • Go/可執(zhí)行文件 - 直接基于alpine鏡像,把編譯后的可執(zhí)行文件打入鏡像。因?yàn)閍lpine不同于普通的Ubuntu/Centos等發(fā)行版,需要靜態(tài)編譯和鏈接應(yīng)用代碼,例如Go需要關(guān)閉cgo:CGO_ENABLED=0 go build ...
  • 靜態(tài)頁面 - nginx:1-alpine等

2、保證Dockerfile中的清理命令在同一行,也可以減小鏡像體積。

Dockerfile的每條指令都會產(chǎn)生一個(gè)文件層,文件層越多鏡像體積就越大。因此,對于不需要產(chǎn)生文件層的命令,要盡量合并到一起。比如,組件的安裝清理就可以放在一條命令里面。如下:

三、減小鏡像傳輸大小

Docker在build鏡像的時(shí)候,如果某個(gè)命令相關(guān)的內(nèi)容沒有變化,會使用上一次緩存(cache)的文件層,在上傳到鏡像倉庫時(shí),這一層也就不需要上傳了。利用這一點(diǎn),在添加應(yīng)用的時(shí)候可以分層添加,具體操作如下:

(1)將不變或者變化很少的體積較大的依賴庫和經(jīng)常修改的自有代碼分開。

(2)因?yàn)閏ache緩存在運(yùn)行Dockerbuild命令的本地機(jī)器上,因此,建議固定使用某臺機(jī)器來進(jìn)行Docker build,以便利用cache。

舉個(gè)例子:

在構(gòu)建Spring Boot應(yīng)用鏡像,我們可以通過以下操作來進(jìn)行分層。

1、在Dockerfile所在目錄,解壓縮maven生成的jar包

  1. unzip <path-to-app-jar>.jar -d app 

2、在Dockerfile中我們把應(yīng)用的內(nèi)容分成4個(gè)部分COPY到鏡像里面:其中前面3個(gè)基本不變,第4個(gè)是經(jīng)常變化的自有代碼。最后一行是解壓縮后,啟動spring boot應(yīng)用的方式。如下:

四、避免使用進(jìn)程管理程序來保證應(yīng)用健康運(yùn)行

在應(yīng)用的某個(gè)實(shí)例崩潰或者非正常退出時(shí),很多進(jìn)程管理程序并不退出,導(dǎo)致平臺無法檢測到應(yīng)用已經(jīng)不可用,進(jìn)而無法重啟應(yīng)用。所以,要避免使用這類進(jìn)程管理程序來啟動鏡像。

五、保證數(shù)據(jù)和日志持久化存儲

1、避免使用本地存儲。應(yīng)用鏡像啟動后,文件系統(tǒng)是臨時(shí)的,崩潰后即被銷毀。持久化數(shù)據(jù),文件等需要存儲到SDS,F(xiàn)DS等后端存儲服務(wù)中

2、應(yīng)用日志不能寫到本地文件,需要寫到標(biāo)準(zhǔn)輸出或者標(biāo)準(zhǔn)錯(cuò)誤,平臺負(fù)責(zé)收集、匯總和后續(xù)的各種處理

 

 

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2018-09-11 08:40:00

前端JavaScriptt性能優(yōu)化

2009-10-09 13:33:00

自學(xué)CCNACCNA

2010-09-26 14:57:40

控制IT預(yù)算

2012-05-16 11:52:23

虛擬化

2010-10-14 13:31:13

無線IP沖突

2018-11-09 08:12:53

網(wǎng)絡(luò)帶寬傳輸

2013-01-07 09:50:18

2022-08-20 19:12:22

編程竅門

2020-07-19 08:11:54

Python代碼開發(fā)

2013-07-29 10:39:39

App竅門

2017-05-03 16:51:00

云服務(wù)器竅門選擇

2020-09-13 09:14:35

PythonJSON開發(fā)

2011-05-03 17:48:59

針式打印機(jī)換針技巧

2011-04-29 16:07:10

激光打印機(jī)

2010-12-23 14:46:08

expect腳本

2010-05-31 09:05:27

Visual Stud

2009-06-23 13:32:48

JavaScript初竅門

2010-05-26 10:10:53

openssh

2009-07-16 15:35:17

交換機(jī)性能交換機(jī)質(zhì)量

2024-10-10 15:24:50

JSONPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 波多野结衣二区 | 日本精a在线观看 | 九色在线视频 | 男人的天堂中文字幕 | 国产精彩视频 | 久久久久成人精品免费播放动漫 | 在线一区视频 | 五月婷婷视频 | 99中文字幕| 成人在线小视频 | 久久久.com| 国产精品亚洲成在人线 | 麻豆av在线免费观看 | 国产成人精品a视频 | 欧美三级视频 | 在线国产一区二区 | 天堂男人av | 爱操影视| 狠狠av| 国产一区二区三区在线 | wwwsihu| 久久精品国产精品青草 | 美女视频黄色片 | 午夜av成人 | 蜜桃日韩| 国产成人99久久亚洲综合精品 | 美女国产精品 | 日本免费在线 | 北条麻妃99精品青青久久主播 | 精品欧美一区二区精品久久 | 国内久久 | 国产精品一卡二卡三卡 | 美女黄色在线观看 | 日韩精品1区2区 | 一级片在线观看 | 综合久久综合久久 | 一区二区三区免费 | 日本三级在线 | 国产91久久久久久 | 久久久久久久电影 | 国产精品久久av |