日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
不可不知的七個(gè)Docker優(yōu)秀實(shí)踐

譯者 | 布加迪

審校 | 重樓

Docker是流行的容器化軟件,但不是每個(gè)人都在高效地使用它。如果您不遵循Docker的優(yōu)秀實(shí)踐,您的應(yīng)用程序就很容易受到安全問(wèn)題或性能問(wèn)題的影響。

本文介紹了您可以用來(lái)高效地使用Docker功能的幾個(gè)最佳實(shí)踐。這些措施提高了安全性,并確保您創(chuàng)建易于維護(hù)的Docker文件。

1.使用官方Docker鏡像

在容器化處理應(yīng)用程序時(shí),必須使用Docker鏡像。您可以使用自定義配置構(gòu)建鏡像,也可以使用Docker的官方鏡像。

構(gòu)建自己的鏡像需要您自行處理所有配置。比如說(shuō),若為Node.js應(yīng)用程序構(gòu)建鏡像,您必須下載Node.js及其依賴項(xiàng)。這個(gè)過(guò)程很耗時(shí),可能不會(huì)生成所有正確的配置。

Docker建議您使用官方的Node.js鏡像,它包含所有正確的依賴項(xiàng)。Docker鏡像有更好的安全措施,具有輕量級(jí)的優(yōu)點(diǎn),并針對(duì)各種環(huán)境進(jìn)行了測(cè)試。你可以在Docker的官方鏡像頁(yè)面上找到官方鏡像。

2.使用Docker鏡像的特定版本

當(dāng)您拉取官方鏡像時(shí),它通常帶有最新標(biāo)簽,這代表該鏡像的最新更新版本。每當(dāng)使用該鏡像構(gòu)建容器,它都是上一個(gè)容器的不同版本。

使用不同的Docker鏡像版本進(jìn)行構(gòu)建可能導(dǎo)致應(yīng)用程序出現(xiàn)不可預(yù)測(cè)的行為。版本可能會(huì)與其他依賴項(xiàng)沖突,最終導(dǎo)致應(yīng)用程序失敗。

Docker建議您使用特定版本的鏡像進(jìn)行拉取和構(gòu)建。官方鏡像也有說(shuō)明文檔,介紹了最常見的用例。

比如說(shuō),使用docker pull alpine:3.18.3,而不是docker pull alpine。Docker將提取該特定版本。然后,您可以在后續(xù)構(gòu)建中使用它,從而減少應(yīng)用程序中的錯(cuò)誤。您可以在Docker官方鏡像頁(yè)面的Supported標(biāo)簽和相應(yīng)的Dockerfile鏈接下找到鏡像的特定版本:

3.掃描鏡像以查找安全漏洞

如何確定想要構(gòu)建的鏡像沒(méi)有安全漏洞?掃描就行??梢允褂肈ocker scan命令掃描Docker鏡像。語(yǔ)法如下:

docker scan [IMAGE]

您必須先登錄到Docker才能掃描鏡像。

docker login

然后,掃描您想要檢查的特定鏡像:

docker scan ubuntu: latest

一種名為Synk的工具可以掃描鏡像,根據(jù)嚴(yán)重程度列出任何漏洞。您可以看到漏洞的類型和指向相關(guān)信息的鏈接(包括如何修復(fù)它)。您可以從掃描結(jié)果中判斷鏡像對(duì)您的應(yīng)用程序而言是否足夠安全。

4.使用小型Docker鏡像

當(dāng)您拉取Docker鏡像時(shí),它附帶所有系統(tǒng)實(shí)用程序。這增加了不需要的工具的鏡像大小。

大型Docker鏡像占用存儲(chǔ)空間,并且減慢容器的運(yùn)行速度。它們存在安全漏洞的可能性也更大。

您可以使用Alpine鏡像減小Docker鏡像的大小。Alpine鏡像是輕量級(jí)的,只附帶必要的工具。它們減少了存儲(chǔ)空間,使應(yīng)用程序運(yùn)行起來(lái)更快速、更高效。

可以在Docker上找到大多數(shù)官方鏡像的Alpine版本。下面是PostgreSQL的Alpine版本的示例:

5.優(yōu)化緩存鏡像層

Dockerfile中的每個(gè)命令代表鏡像上的一個(gè)層。這些層有不同的實(shí)用程序,并執(zhí)行不同的功能。如果您查看Docker Hub上的官方鏡像,將會(huì)看到用于創(chuàng)建它們的說(shuō)明。

Dockerfile包含創(chuàng)建鏡像所需的全部?jī)?nèi)容。這就是為什么許多開發(fā)人員青睞Docker而不是虛擬機(jī)的原因之一。

下面是示例Alpine鏡像的結(jié)構(gòu):

當(dāng)您構(gòu)建基于鏡像的應(yīng)用程序時(shí),實(shí)際上在為鏡像添加更多的層。Docker從上到下在Dockerfile上運(yùn)行指令,如果一個(gè)層發(fā)生了變化,Docker必須重建后續(xù)的層。

最佳實(shí)踐是將您的Dockerfile按照由更改最少的文件到更改最頻繁的文件這個(gè)順序排列。不會(huì)改變的指令(比如安裝)可以放在文件的頂部。

當(dāng)您修改一個(gè)文件時(shí),Docker根據(jù)修改后的文件進(jìn)行構(gòu)建,并在上面緩存未修改的文件。因此,流程運(yùn)行速度更快。

請(qǐng)看上圖所示的例子。如果應(yīng)用程序文件發(fā)生了變化,Docker將從那里構(gòu)建,它沒(méi)必要再次安裝NPM包。

如果從鏡像構(gòu)建,該過(guò)程將比從頭重建所有其他層運(yùn)行得更快。緩存也加快了從Docker Hub拉取和推送鏡像的速度。

6.使用.dockerignore文件

在使用Dockerfile構(gòu)建鏡像時(shí),您可能希望保留某些信息的私密性。一些文件和文件夾可能是項(xiàng)目的一部分,但您不希望將它們包含在構(gòu)建過(guò)程中。

使用.dockerignore文件可以大大減小鏡像大小。這是由于構(gòu)建過(guò)程只包含必要的文件。它還有助于保持文件的私密性,避免暴露密鑰或密碼。

.dockerignore文件是您在與Dockerfile相同的文件夾中創(chuàng)建的一個(gè)文件。它是一個(gè)文本文件,酷似.gitignore文件,含有您不希望在構(gòu)建過(guò)程中包含的任何文件的名稱。

這里有一個(gè)例子:

7.使用最小權(quán)限用戶原則

默認(rèn)情況下,Docker使用root用戶作為管理員以便獲得運(yùn)行命令的權(quán)限,但這種做法不好。如果其中一個(gè)容器存在漏洞,黑客就可以訪問(wèn)Docker主機(jī)。

為了避免這種情況,應(yīng)創(chuàng)建專用的用戶和用戶組。您可以為用戶組設(shè)置相應(yīng)的權(quán)限,以保護(hù)敏感信息。如果用戶受到危及,您可以在不暴露整個(gè)項(xiàng)目的情況下刪除該用戶。

下面這個(gè)例子展示了如何創(chuàng)建用戶并設(shè)置權(quán)限:

一些基本鏡像在其中創(chuàng)建了偽用戶。您可以使用已安裝的用戶,而不是root用戶權(quán)限。

最佳實(shí)踐是減少漏洞和編寫更簡(jiǎn)潔代碼的好方法。您可以將許多最佳實(shí)踐應(yīng)用于使用的每項(xiàng)Docker特性。

一個(gè)組織良好的項(xiàng)目可以更容易與Kubernetes等其他編排工具進(jìn)行同步。您可以從本文中概述的這些方法入手,在學(xué)習(xí)Docker的過(guò)程中采用更多的方法。

原文標(biāo)題:8 Docker Best Practices You Should Know About,作者:Sandra Dindi


網(wǎng)頁(yè)題目:不可不知的七個(gè)Docker優(yōu)秀實(shí)踐
網(wǎng)頁(yè)網(wǎng)址:http://m.5511xx.com/article/cdgdecc.html