精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何借助Hadolint編寫高質(zhì)量的 Dockerfile

開發(fā) 開發(fā)工具
正如您所看到的,這個工具很容易上手,它可以在幾秒鐘內(nèi)提高您的 Dockerfile 的質(zhì)量。Hadolint 并不是唯一一個用于 Dockerfile 的代碼檢查工具。

前言

在容器化的世界中,Dockerfile 就像是構(gòu)建輕量、便攜和自包含應用環(huán)境的藍圖。但是創(chuàng)建組織良好且優(yōu)化的 Dockerfile 可能有些棘手,需要仔細關注細節(jié)并遵循最佳實踐。這就是 Hadolint 登場的地方,就像一位超級英雄,幫助您編寫完美的 Dockerfile。

Hadolint是一個開源工具,它會自動檢查您的Dockerfile是否存在任何問題。它使用一組預定義的規(guī)則和ShellCheck來檢查您Dockerfile的每一行,確保您的鏡像安全、快速,并符合行業(yè)標準。

在這個指南中,我們將學習如何使用 Hadolint 來編寫高質(zhì)量的 Dockerfile。

我們將探索 Hadolint 的代碼檢查過程、它的許多規(guī)則,以及如何將 Hadolint 納入您的開發(fā)工作流程。

我們還將發(fā)現(xiàn)如何創(chuàng)建小巧、高效且安全免受常見安全弱點影響的鏡像。

圖片圖片

hadolint簡介

Haskell Dockerfile Linter Hadolint 是一個 Dockerfile 文件檢查工具,幫助您構(gòu)建符合最佳實踐的 Docker 鏡像。我在所有項目中都使用它,以確保我創(chuàng)建的鏡像小巧、安全、高效且易于維護。

使用代碼檢查工具來檢查 Dockerfile 的原因有很多:

  • 遵循 Docker 鏡像的最佳實踐
  • 在編寫 Dockerfile 時加快反饋速度,因為檢查工具-可以在構(gòu)建鏡像之前發(fā)現(xiàn)語法錯誤和安全漏洞
  • 可以檢查代碼風格是否符合規(guī)范
  • 可以提高 Dockerfile 的可讀性和可維護性
  • 在 CI/CD 流水線中使用它們
  • 更深入地了解如何編寫更好的 Dockerfile

Hadolint配備了強大且易于使用的CLI。您可以在多種平臺上安裝它,包括macOS。

$ brew install hadolint

請使用以下命令確認安裝是否成功:

$ hadolint --help
hadolint - Dockerfile Linter written in Haskell
...

讓我們創(chuàng)建一個Dockerfile來測試這個工具,現(xiàn)在將以下內(nèi)容添加到Dockerfile中。

FROM python
MAINTAINER johndoe@gmail.com
LABEL org.website="containiq.com"
 
RUN mkdir app && cd app
 
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
 
COPY . .
 
CMD python manage.py runserver 0.0.0.0:80000

現(xiàn)在使用這個命令驗證 Dockerfile:

$ hadolint Dockerfile
Dockerfile:1 DL3006 warning: Always tag the version of an image explicitly
Dockerfile:1 DL3049 info: Label `maintainer` is missing.
Dockerfile:2 DL4000 error: MAINTAINER is deprecated
Dockerfile:3 DL3052 warning: Label `org.website` is not a valid URL.
Dockerfile:5 DL3003 warning: Use WORKDIR to switch to a directory
Dockerfile:5 SC2164 warning: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.
Dockerfile:7 DL3045 warning: `COPY` to a relative destination without `WORKDIR` set.
Dockerfile:8 DL3013 warning: Pin versions in pip. Instead of `pip install <package>` use `pip install <package>==<version>` or `pip install --requirement <requirements file>`
Dockerfile:8 DL3042 warning: Avoid use of cache directory with pip. Use `pip install --no-cache-dir <package>`
Dockerfile:9 DL3059 info: Multiple consecutive `RUN` instructions. Consider consolidation.
Dockerfile:9 DL3042 warning: Avoid use of cache directory with pip. Use `pip install --no-cache-dir <package>`
Dockerfile:11 DL3045 warning: `COPY` to a relative destination without `WORKDIR` set.
Dockerfile:13 DL3025 warning: Use arguments JSON notation for CMD and ENTRYPOINT arguments

每行的結(jié)構(gòu)如下:<LINE_NUMBER><RULE_CODE><SEVERITY_LEVEL>:

讓我們更詳細地探討這些參數(shù)。

代碼規(guī)則

一個規(guī)則代碼以DL或SC為前綴。DL前綴表示該規(guī)則來自Hadolint直接。SC前綴表示該規(guī)則來自SpellCheck,這是一個用于shell腳本的靜態(tài)分析工具,與Hadolint一起提供。您可以在這里找到規(guī)則的綜合列表。

每個規(guī)則都有一個專門的文檔頁面,列出了代碼示例、原理和其他重要細節(jié)。請查看DL3006的專門頁面。

您可以使用--ignore RULECODE選項忽略一個或多個規(guī)則。

$ hadolint --ignore DL3013 --ignore DL3042 Dockerfile

您也可以在 Dockerfile 中忽略規(guī)則。我更喜歡這種方法,因為您可以逐行排除規(guī)則代碼,這樣更清晰地知道違規(guī)實際發(fā)生在哪里。

# hadolint ignore=DL3013
RUN pip install --upgrade pip

Hadolint擁有一個活躍的開源社區(qū)。新的規(guī)則代碼定期添加,因此請確保定期檢查您是否在運行最新版本的Hadolint。

安全級別

嚴重級別表示違規(guī)的嚴重程度。共有六個級別:錯誤(error)、警告(warning)、信息(info)、樣式(style)、忽略(ignore)和無(none)。

CLI 包括一個 --failure-threshold(縮寫為 -t)選項,用于排除特定嚴重級別導致失敗。例如,如果您只希望 Hadolint 在錯誤違規(guī)時失敗。

$ hadolint -t error Dockerfile

請注意,來自其他嚴重級別的不符合規(guī)范行為仍將被報出來,但不會導致失敗。

如果您不同意某個規(guī)則代碼的嚴重級別,您可以通過使用--<SEVERITY_LEVEL> RULECODE選項輕松更改它。例如,以下命令將DL3006升級為錯誤,將DL3045降級為信息(這兩個代碼默認為警告):

$ hadolint --error DL3006 --info DL3045 Dockerfile
Dockerfile:1 DL3006 error: Always tag the version of an image explicitly
Dockerfile:7 DL3045 info: `COPY` to a relative destination without `WORKDIR` set.

標簽檢查

Dockerfile標簽是注釋您的Docker鏡像的絕佳工具。Hadolint提供了一些驗證選項,以確保您的標簽設置正確。

--require-label LABELSCHEMA選項驗證您的標簽是否遵循特定格式。您可以在這里查看所有可接受的格式值。

$ hadolint --require-label maintainer:text --require-label org.website:url Dockerfile
Dockerfile:2 DL3049 info: Label `maintainer` is missing.
Dockerfile:3 DL3052 warning: Label `org.website` is not a valid URL.

The --strict-labels 選項會驗證在您的模式中定義的標簽之外是否有額外的標簽。

$ hadolint --require-label maintainer:text --strict-labels Dockerfile
Dockerfile:3 DL3050 info: Superfluous label(s) present.

配置文件

將選項手動傳遞到每次 Hadolint 運行中可能會很煩人且容易出錯。Hadolint 很方便地提供了配置文件支持,可以將所有選項存儲在一個地方。這個文件可以存在于各種位置,但我通常會將其放在存儲庫的根目錄下,命名為 .hadolint.yaml。

override:
 error:
   - DL3006
 info:
   - DL3045
label-schema:
 maintainer: text
 org.website: url
strict-labels: true

修復 Dockerfile

逐個解決每個錯誤是學習 Dockerfile 最佳實踐的絕佳方法。如上所述,每條規(guī)則都有非常清晰和詳細的文檔頁面。嘗試一下,完成后再回顧這篇文章。

到這一步,Hadolint 應該不會報任何錯誤。你的文件應該看起來類似于這樣:

FROM python:3.10
LABEL maintainer="johndoe@gmail.com"
LABEL org.website="https://www.airplane.dev/"
 
WORKDIR /app
 
COPY requirements.txt ./
# hadolint ignore=DL3013
RUN pip install --upgrade --no-cache-dir pip && \
 pip install --no-cache-dir -r requirements.txt
 
COPY . .
 
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

需要進一步解釋的一些變化:

  • 我們將使用最新可用的 Python 次要版本(目前為 3.10)標記 Python 基礎鏡像。我們不包括補丁版本(3.10.2),因為 Python 的補丁版本向后兼容,通常包含有用的 bug 修復。
  • 我通常喜歡使用/app工作目錄來保持我的 Docker 鏡像一致,但您可以使用任何您想要的新目錄或現(xiàn)有目錄。
  • 我們忽略 DL3013,因為我們想要下載最新版本的 pip。沒有必要將其固定到特定版本。

集成

Hadolint包含許多方便的集成功能,可以在整個開發(fā)過程中自動運行代碼檢查工具。我最喜歡的集成有:

  • VS Code:直接在編輯器中運行Hadolint
  • pre-commit:在每次git提交時運行Hadolint
  • GitHub Actions:在GitHub的CI/CD中運行Hadolint

集成非常重要,特別是在較大的團隊中,因為一些開發(fā)人員會忘記手動運行代碼檢查工具。我在開始新的Docker項目時立即設置這些集成。

總結(jié)

正如您所看到的,這個工具很容易上手,它可以在幾秒鐘內(nèi)提高您的 Dockerfile 的質(zhì)量。Hadolint 并不是唯一一個用于 Dockerfile 的代碼檢查工具。Docker 引擎本身也包含一個,但更多用于檢查基本錯誤。此外,還有來自 Snyk 的一個代碼檢查工具,可能更專注于安全問題。

責任編輯:武曉燕 來源: 云原生運維圈
相關推薦

2012-09-13 10:44:18

Python代碼

2011-03-04 10:11:09

JavascriptAPI

2011-04-07 09:18:59

MySQL語法

2015-08-25 08:29:11

編寫高質(zhì)量命名

2011-12-29 15:02:27

JavaScript

2015-08-25 08:42:36

高質(zhì)量代碼命名

2011-04-01 09:13:19

VB程序員

2017-07-14 09:54:47

代碼函數(shù)程序

2023-05-06 12:26:41

2015-07-13 10:48:44

OC代碼程序員

2021-01-04 08:04:51

JS 變量JavaScript

2020-02-14 09:39:40

箭頭函數(shù)語法運算符

2020-02-14 14:35:01

編程語言PythonJava

2023-10-31 16:22:31

代碼質(zhì)量軟件開發(fā)Java

2010-03-01 14:31:04

Java

2015-08-03 10:40:59

程序員代碼質(zhì)量Quora

2022-10-24 08:10:21

SQL代碼業(yè)務

2020-09-18 07:57:10

代碼編碼開發(fā)

2023-10-15 12:07:09

2025-07-23 04:00:00

點贊
收藏

51CTO技術棧公眾號

国产精品自拍av| 国产精品亚洲欧美一级在线| 92国产精品观看| 欧美激情精品久久久久久黑人| avtt中文字幕| caoporn视频在线| 丁香天五香天堂综合| 久久久久久一区二区三区| 熟女人妻在线视频| 国产 日韩 欧美一区| 国产欧美日本一区视频| 国产一区在线播放| 久久人妻无码aⅴ毛片a片app| 24小时成人在线视频| 一区二区三区四区av| av一区和二区| 9i看片成人免费看片| 欧美日韩国产免费观看视频| 欧美一区二区三区影视| 91免费黄视频| av中文天堂在线| 国产成人久久精品77777最新版本| 国内精品伊人久久| 久久日免费视频| 加勒比中文字幕精品| 欧美午夜一区二区三区免费大片| 国产911在线观看| 国产一区电影| 国产福利91精品| 国产精品美女免费看| 日本午夜精品理论片a级app发布| 欧美色网址大全| 亚洲精品久久久久久久久久久 | 中文乱码免费一区二区三区下载| 亚洲精品在线看| a级大片免费看| 日韩精品第一| 欧美丝袜第一区| 欧美大黑帍在线播放| 婷婷在线视频| 国产日韩在线不卡| 久久久99国产精品免费| www视频在线| 麻豆精品一区二区av白丝在线| 97avcom| 久久久久97国产| 国产精品久久久久久久久久10秀| 亚洲免费伊人电影在线观看av| 国产成人精品一区二区在线小狼 | 欧美日韩亚洲高清| 日韩免费在线观看av| 国产理论在线观看| 日韩一区在线免费观看| 亚洲欧洲精品在线| 成人综合影院| 中文字幕乱码日本亚洲一区二区| 久久精品99久久| 欧美熟妇另类久久久久久不卡 | 伊人婷婷欧美激情| gogogo免费高清日本写真| 在线观看的av| 国产精品视频yy9299一区| 天天爽天天狠久久久| 你懂的视频在线| 久久久亚洲高清| 免费一区二区三区在在线视频| 手机在线精品视频| 不卡的av电影在线观看| 国产女主播一区二区| 欧洲av在线播放| 成人一级视频在线观看| 国产欧美在线一区二区| 蜜臀久久久久久999| 成人av在线资源网站| 国产一区二区精品在线| 人成网站在线观看| 成人午夜在线视频| 国产在线欧美日韩| 青青青手机在线视频观看| 91美女蜜桃在线| 欧美三级网色| 3p在线观看| 亚洲欧洲日产国产综合网| 日本一区二区三区四区五区六区| av黄色在线| 亚洲午夜在线观看视频在线| 国产在线播放观看| 午夜欧美激情| 欧美日韩精品三区| 三级网站免费看| 精品亚洲免a| 亚洲视频在线观看免费| 一本一本久久a久久| 欧美精品91| 97超碰国产精品女人人人爽| 国产精品21p| 久久精品免费看| 亚洲一区二区三区在线视频| 国产成人无码www免费视频播放| 91网站黄www| 亚洲人体一区| 色yeye免费人成网站在线观看| 黄色成人在线播放| xxxx一级片| 日本少妇精品亚洲第一区| 精品偷拍一区二区三区在线看| 黄色免费一级视频| 好吊日精品视频| 国产精品小说在线| 欧美一级性视频| 中文字幕久久午夜不卡| 美女黄色免费看| 亚洲优女在线| 欧美一级欧美三级| xxxx日本免费| 欧美在线亚洲| 国产成人精品最新| 亚洲乱码在线观看| 亚洲国产精品高清| 精品这里只有精品| 精品久久亚洲| 亚洲人成在线观看| 久久综合激情网| 免费在线看成人av| 免费影院在线观看一区| 伊人福利在线| 欧美日韩成人一区二区| 亚洲熟妇无码av| 欧美日韩爆操| 91亚洲永久免费精品| 久香视频在线观看| 亚洲成人动漫精品| 午夜视频在线免费看| 日本不卡电影| 国产成人欧美在线观看| 姝姝窝人体www聚色窝| 亚洲精品日韩一| 国产福利在线免费| 神马影视一区二区| 2019av中文字幕| 理论片中文字幕| 中文字幕一区二区三区精华液 | 国产一区二区三区高清| 在线你懂的视频| 欧美高清视频不卡网| 青娱乐国产视频| 美女精品一区| 精品国产区在线| 香蕉视频免费在线播放| 欧美体内谢she精2性欧美| 在线观看欧美一区二区| 99久久精品国产亚洲精品| 日本三级韩国三级久久| 色呦呦视频在线| 欧美激情一二三区| 男人的天堂日韩| 亚洲免费专区| 2019国产精品自在线拍国产不卡| 国产chinasex对白videos麻豆| 国产精品视频麻豆| 色综合五月婷婷| 久久一本综合| 国产精品久久久久久久久久三级| 无码国产精品高潮久久99| 亚洲国产精品久久一线不卡| 日韩a一级欧美一级| 亚洲视频在线免费| 91老司机精品视频| 麻豆视频在线| 777奇米四色成人影色区| 亚洲AV无码国产成人久久| 亚洲深夜福利| 免费亚洲一区二区| 涩涩视频在线免费看| 亚洲毛片一区二区| 国产91精品看黄网站在线观看| 久久天堂av综合合色蜜桃网 | 综合国产精品| 福利精品视频| 极品在线视频| 精品无人区太爽高潮在线播放| 久久久久99精品成人片我成大片| 精品女人视频| 色七七影院综合| 久久精品视频7| 国产午夜精品久久久久久久| 男女av免费观看| 精品国产91乱码一区二区三区四区 | 欧美日韩爆操| 国产亚洲精品美女久久久m| av免费在线视| 日韩hd视频在线观看| 伊人成年综合网| 综合久久给合久久狠狠狠97色| 拔插拔插华人永久免费| 黄色精品网站| 免费国产一区| 欧美国产亚洲精品| 91国产视频在线| 国产高清免费av在线| 欧美日韩国产综合一区二区 | 国产精品国产一区二区三区四区| 1000精品久久久久久久久| 久久久久亚洲av无码麻豆| 好看的av在线不卡观看| 欧洲成人一区二区| 亚洲欧美综合久久久久久v动漫| 色综合久久悠悠| 偷拍自拍在线| 在线区一区二视频| 久久国产在线视频| 久久久综合网站| 狠狠躁狠狠躁视频专区| 欧美三区不卡| 久久久www免费人成黑人精品| 日韩国产一二三区| 午夜精品国产精品大乳美女| 久草在现在线| 欧美一区二区视频网站| 91在线视频在线观看| 一色屋精品亚洲香蕉网站| 这里只有精品在线观看视频| 青青国产91久久久久久| 欧美在线观看视频免费| 国产aⅴ精品一区二区三区久久| 亚洲999一在线观看www| 都市激情综合| 欧美大片在线看免费观看| 精品视频一二区| 日韩三级中文字幕| 国产91精品一区| 亚洲三级在线观看| 久久只有这里有精品| 国产91综合一区在线观看| 亚洲精品自拍网| 久久国产高清| 欧美一级视频免费看| 亚洲久久久久| 色一情一乱一伦一区二区三欧美| 久久精品免视看国产成人| 国产精品日日做人人爱| 中文字幕人成乱码在线观看| 久久成人免费视频| porn视频在线观看| 亚洲精品福利视频| 视频污在线观看| 91精品国产乱| 亚洲视频一区二区三区四区| 欧美日韩激情小视频| 日本一级黄色大片| 亚洲综合色噜噜狠狠| 日本伦理一区二区三区| 久久久久久影视| 日本中文字幕在线不卡| 激情丁香综合五月| 天天爽人人爽夜夜爽| 爽爽淫人综合网网站| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 亚洲午夜91| 伊人久久在线观看| 伊人久久大香线| 在线视频一区观看| 99久久婷婷国产综合精品电影√| 日本亚洲导航| 亚洲精品亚洲人成在线| 99久久久精品免费观看国产| 波多野结衣欧美| 成人免费午夜电影| 四虎国产精品免费久久5151| 国产女人18毛片水18精品| 玖玖精品在线| 国产精品综合不卡av| 成人性生活av| 国产精品久久久久久久久久新婚| 日韩欧美一区二区三区免费观看| 国产97色在线|日韩| 一区二区电影免费观看| 国产精品99久久久久久白浆小说| 唐人社导航福利精品| 国产成人综合亚洲| 91福利精品在线观看| 55夜色66夜色国产精品视频| 欧美大片免费高清观看| 国产精品扒开腿做爽爽爽的视频| 欧洲精品一区二区三区| 国产精品亚洲美女av网站| 91成人在线网站| 91久久伊人青青碰碰婷婷| 99国产精品久久一区二区三区| 国产一区在线观| 日韩av影院| 亚洲高清视频一区二区| 亚洲一区在线| 无码粉嫩虎白一线天在线观看| 一区二区三区高清视频在线观看| 免费日韩视频在线观看| 精品一区二区三区免费播放| 欧美体内she精高潮| 99热99精品| 午夜时刻免费入口| 亚洲欧美韩国综合色| 九九视频免费看| 欧美日韩亚洲国产一区 | 色悠久久久久综合欧美99| 97超碰国产在线| 精品国产免费人成电影在线观看四季 | 91av久久| 国产激情综合五月久久| 亚洲精品大全| 国产精品免费一区二区三区| 久久不见久久见中文字幕免费| 日日夜夜精品网站| 欧美独立站高清久久| 精品国产av无码一区二区三区| 久久看片网站| 五月婷婷丁香色| 丁香一区二区三区| 中文字幕被公侵犯的漂亮人妻| 亚洲欧洲精品成人久久奇米网| 精品在线视频免费| 欧美在线观看禁18| 亚洲黄色在线观看视频| 亚洲午夜小视频| 欧美人与性动交α欧美精品图片| 奇米四色中文综合久久| 亚洲国产欧美国产第一区| 欧美激情视频一区二区三区| 亚洲乱码精品| 久久综合久久色| 国产精品18久久久久久vr| 中字幕一区二区三区乱码| 亚洲第一av色| 91禁在线观看| 伊人久久免费视频| 亚洲人成在线网站| 成人久久18免费网站漫画| 国产伦精品一区二区三区视频 | 国产精品无码自拍| 亚洲国产精品成人久久综合一区| 精品成人av一区二区在线播放| 欧美一区二区在线视频| jizz日韩| 97视频在线观看播放| 成人高潮视频| 日本xxxxx18| 久久av中文字幕片| 国产主播av在线| 在线精品视频免费观看| 五月婷婷六月丁香| 欧美激情喷水视频| 日韩精品成人在线观看| 污视频在线免费观看一区二区三区| 亚洲毛片播放| www.成人黄色| 国产精品色在线| 日本高清www免费视频| 4438x亚洲最大成人网| 日本福利午夜视频在线| 国产91对白在线播放| 伦理一区二区三区| 超碰成人免费在线| av男人天堂一区| 国产无遮挡裸体免费视频| 欧美本精品男人aⅴ天堂| 午夜毛片在线| 91九色在线视频| 97精品一区二区| www.com黄色片| 中文无字幕一区二区三区| 亚洲欧美偷拍一区| 中文字幕在线看视频国产欧美| 国产综合色在线观看| 五月婷婷综合色| 免费视频一区二区| 精品在线观看一区| 欧美一区二区视频在线观看| 婷婷成人激情| 91丝袜脚交足在线播放| 欧美日韩精选| 精品人妻二区中文字幕| 五月天久久比比资源色| 亚洲av电影一区| 91精品国产自产91精品| 四虎5151久久欧美毛片| 成年人网站大全| 欧美国产激情一区二区三区蜜月| 一区二区三区黄| 欧美肥婆姓交大片| 精品国产一区二区三区成人影院 | 性囗交免费视频观看| 欧美日韩另类字幕中文| 免费在线一级视频| 国产女人精品视频| 欧美91视频| 性欧美丰满熟妇xxxx性久久久| 91福利精品第一导航| 日本三级视频在线观看| 国产精品成人观看视频免费| 亚洲成人资源| 69xxx免费|