精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本高清不卡一区二区三| 97在线精品视频| 国产xxxxhd| 国产美女一区视频| av中文字幕亚洲| 国产成人精品999| 久久av红桃一区二区禁漫| 9国产精品午夜| 欧美日韩激情网| 亚洲看片网站| 欧洲av在线播放| 蜜臀99久久精品久久久久久软件| 欧美第一淫aaasss性| 欧美激情aaa| 日韩精品成人在线观看| 色婷婷久久99综合精品jk白丝| 欧美少妇一级片| 四虎影视在线播放| 国产高清不卡一区二区| 国产精品第二页| 久久精品视频8| 日本久久综合| 亚洲男人天堂网| 乱码一区二区三区| 亚洲精品tv| 色美美综合视频| 妞干网视频在线观看| 尤物网址在线观看| 97se亚洲国产综合自在线| 91久久国产综合久久91精品网站| 国产日产精品一区二区三区| 欧美精品一卡| 久久影院在线观看| 91免费在线看片| 国产一区二区观看| 日韩麻豆第一页| 亚洲成a人片在线www| 成人在线视频国产| 欧美日韩国产一级片| 超碰网在线观看| 黄视频网站在线观看| 亚洲在线成人精品| 免费观看亚洲视频| 国产精品久久麻豆| 亚洲同性同志一二三专区| 日韩在线第一区| 久草福利在线| 久久久蜜臀国产一区二区| 999久久久| 99精品在线看| 国产制服丝袜一区| 91精品久久久久久久| 中文字幕av免费观看| 另类天堂av| 欧美一级大片在线免费观看| 啦啦啦免费高清视频在线观看| 亚洲成人在线| 午夜精品久久久99热福利| 精品在线免费观看视频| 亚洲香蕉网站| 久久久在线视频| 精品国产免费观看| 午夜在线精品偷拍| 国产精品扒开腿做| 亚洲天堂网在线观看视频| 美女视频黄a大片欧美| 91精品视频网站| www夜片内射视频日韩精品成人| 国产一区二区网址| 国产精品区一区| 亚洲三级中文字幕| 日本一二三不卡| 一区二区三区四区国产| 在线观看三级视频| 午夜影院在线观看欧美| 人妻精品无码一区二区三区| 神马久久资源| 欧美福利视频一区| 特级特黄刘亦菲aaa级| 欧美亚洲色图校园春色| 亚洲人成亚洲人成在线观看| 日本精品久久久久中文| 欧美在线网址| 91精品成人久久| 中文字幕无线码一区| 狠狠色丁香婷婷综合久久片| 国产精品久久精品国产| 国产最新视频在线观看| 中文字幕五月欧美| 国产69精品久久久久久久| 美女福利一区二区| 91麻豆精品国产自产在线观看一区 | 91久久久免费一区二区| 夜夜夜夜夜夜操| 韩国精品福利一区二区三区| 国产亚洲人成a一在线v站| 免费三级在线观看| 国产精品久久久久久久免费软件| 国产精品亚洲欧美导航| 精品女同一区二区三区| 久久久久久久久久久久久久久99| 国产又黄又爽免费视频| 青青青免费在线视频| 在线观看日韩国产| 激情综合激情五月| 99精品网站| 国产69久久精品成人看| 国产三级午夜理伦三级| 久久精子c满五个校花| 大陆极品少妇内射aaaaaa| 黑人精品一区| 精品1区2区在线观看| 亚洲天堂精品一区| 亚洲欧美清纯在线制服| 99在线高清视频在线播放| 91这里只有精品| 精品久久香蕉国产线看观看亚洲 | 成人免费91| 亚洲最新中文字幕| 国产精品suv一区二区三区| 国产一区在线观看视频| 欧美在线一区二区三区四区| av男人的天堂在线观看| 91精品国产综合久久久久久漫画 | 国产99视频在线观看| 亚洲国产成人精品一区二区三区| 国产精品国产三级国产aⅴ中文| 欧美一级在线看| jizz18欧美18| 欧美理论电影在线播放| 夜夜躁狠狠躁日日躁av| 久久久久久电影| 国产免费观看高清视频| 第一区第二区在线| 久久免费视频这里只有精品| 99热这里只有精品1| 国产精品电影院| 一路向西2在线观看| 精品日韩欧美一区| 欧美在线观看网址综合| 少妇性bbb搡bbb爽爽爽欧美| 亚洲成人tv网| 国产原创剧情av| 欧美日本不卡| 99精品国产高清一区二区| 国产cdts系列另类在线观看| 欧美精品国产精品| 免费看特级毛片| 国产一区三区三区| 高清无码一区二区在线观看吞精| 在线观看欧美| 欧美超级乱淫片喷水| 国产黄色片av| 一区二区三区波多野结衣在线观看| 99精品视频国产| 久久久久亚洲| 99蜜桃在线观看免费视频网站| 色综合999| 精品国产一区二区亚洲人成毛片 | 美日韩精品视频| 六十路精品视频| 欧美日韩尤物久久| 俺去啦;欧美日韩| 99久久国产免费| 亚洲一区二区精品久久av| 日本性生活一级片| 在线一区免费观看| 日韩成人在线资源| 亚洲成人精品综合在线| 欧美成人免费小视频| 亚洲乱码精品久久久久..| 性久久久久久久久久久久| 一区二区不卡免费视频| 免费亚洲电影在线| 美女黄色片网站| 精品av导航| 国产精品99导航| 国产日产一区二区| 亚洲国产精品va在线观看黑人| 日韩在线播放中文字幕| 国产精品久久久久一区二区三区| 日本r级电影在线观看| 99精品国产在热久久下载| 色噜噜一区二区| 999久久久精品一区二区| 日本一区二区三区四区视频| 在线观看免费黄色| 精品国产一区二区亚洲人成毛片| 免费污污视频在线观看| 亚洲免费观看高清在线观看| 亚洲最大免费视频| 精品在线播放免费| 国产成人无码a区在线观看视频| 色综合天天爱| 国产一区精品在线| 伊人国产精品| 91地址最新发布| 成人在线观看亚洲| 亚洲人成啪啪网站| 欧美一区二区黄片| 欧美视频一区二区三区| 国产午夜免费视频| 中文字幕在线播放不卡一区| 国产激情视频网站| 国内成+人亚洲+欧美+综合在线| 免费在线观看亚洲视频| 一区二区三区四区电影| 日韩欧美一区二区视频在线播放 | caoporn国产| 一区二区三区av电影 | 亚洲一区二区三区四区不卡| 国产美女永久免费无遮挡| 成人一级片网址| 中文字幕 欧美日韩| 天堂成人免费av电影一区| 18禁裸男晨勃露j毛免费观看| 日韩欧美午夜| 欧美一区亚洲二区| 欧美日韩一区二区三区不卡视频| 亚洲a区在线视频| 开心久久婷婷综合中文字幕| 全亚洲最色的网站在线观看| 后进极品白嫩翘臀在线播放| 久久久国产精品亚洲一区| 成年在线电影| 亚洲深夜福利在线| 日本福利在线观看| 日韩av网站在线| 神马午夜在线观看| 欧美成人一级视频| 精品人妻aV中文字幕乱码色欲| 欧美日韩中文一区| 日韩精选在线观看| 色av一区二区| 日韩在线视频不卡| 黑人巨大精品欧美一区二区三区| 国产午夜小视频| 午夜伦理一区二区| 欧美成人精品欧美一级乱黄| 亚洲国产精品精华液网站| 久久久久久久久艹| 亚洲一区在线播放| 久草视频免费在线| 亚洲最大的成人av| 日韩aaaaaa| 黑人极品videos精品欧美裸| 欧美三级韩国三级日本三斤在线观看| 亚洲一区二区三区四区在线 | 国产精品一区二| 盗摄牛牛av影视一区二区| 国产精品久久一区二区三区| www.豆豆成人网.com| 国产日本一区二区三区| 久久精品福利| 欧美日韩一区二| 日本久久一二三四| 中文字幕精品在线播放| 国产字幕视频一区二区| 男女超爽视频免费播放| 久久成人精品| 免费一区二区三区在线观看| 国内精品久久久久影院薰衣草 | 一区二区自拍偷拍| 欧美精品乱码久久久久久按摩| 国产伦精品一区二区三区视频痴汉| 制服丝袜成人动漫| 六月丁香综合网| 亚洲女人天堂av| 在线免费看黄网站| 欧美日韩xxxxx| 91美女精品| 国产精品扒开腿做| 亚洲精品高潮| 鲁丝片一区二区三区| 日韩国产欧美| 无码人妻精品一区二区蜜桃网站| 国产九九精品| 2025韩国理伦片在线观看| 国产美女一区二区三区| 欧洲一级黄色片| 国产精品网站一区| 校园春色 亚洲| 一本到三区不卡视频| 国产又粗又黄又爽的视频| 亚洲电影天堂av| 69视频在线| 性色av一区二区咪爱| 欧美精品资源| 国产精品加勒比| 久久在线视频| 成人免费观看cn| 久久99国产精品麻豆| 国产人成视频在线观看| 中文字幕二三区不卡| 国产一级在线免费观看| 欧美性受极品xxxx喷水| 成 人 黄 色 片 在线播放| 国产午夜精品美女视频明星a级| 26uuu亚洲电影在线观看| 日本精品免费一区二区三区| 国产精品1区在线| 日本一区二区三区在线视频| 欧美午夜不卡| 在线观看日本一区二区| 91啦中文在线观看| 蜜臀久久精品久久久用户群体| 日韩欧美在线第一页| 精品国产伦一区二区三区| 亚洲性生活视频| 精品丝袜在线| 91日韩久久| 99久久www免费| 青青草av网站| 久久伊人中文字幕| 国产亚洲自拍av| 3d成人h动漫网站入口| 国产系列电影在线播放网址| 性色av一区二区三区免费| 久久av偷拍| 亚洲一区3d动漫同人无遮挡 | 国产精品欧美久久| 中文字幕乱码亚洲无线精品一区| 一区二区三区国产免费| 久久影院电视剧免费观看| 日本在线视频免费| 日韩美女在线视频| 国产91在线视频蝌蚪| 国产精品一区二区性色av| 猛男gaygay欧美视频| 97国产精东麻豆人妻电影| 不卡在线视频中文字幕| 欧美成人免费看| 日韩视频在线你懂得| 高清免费电影在线观看| 91久久精品美女高潮| 99久久夜色精品国产亚洲96| 国产一二三区av| 中文字幕一区二区三区精华液| 伊人久久一区二区| 自拍偷拍亚洲精品| 农村妇女一区二区| 亚洲日本欧美在线| 麻豆91在线播放| 女人18毛片毛片毛片毛片区二| 欧美日韩在线一区二区| 五月婷婷在线观看| 91免费电影网站| 欧美在线亚洲| 中国黄色片视频| 偷窥国产亚洲免费视频| 天堂v视频永久在线播放| 欧美专区国产专区| 精品国产91乱码一区二区三区四区 | 欧美一级黄色片| 欧洲成人综合网| 国产无套精品一区二区| 国产精品一二| 一区二区伦理片| 欧美精品v国产精品v日韩精品 | 国产成人激情视频| 日本精品黄色| 杨幂一区二区国产精品| 亚洲综合丝袜美腿| 五月婷婷六月色| 国产精品极品美女在线观看免费 | 国产精品免费久久| 国产精选久久久| 欧美美最猛性xxxxxx| 国产成人精品福利| 韩国日本在线视频| 国产精品免费视频网站| av 一区二区三区| 午夜精品一区二区三区在线视频 | 中文在线最新版天堂| 久久亚洲精品视频| 日本久久成人网| 黄大色黄女片18第一次| 尤物在线观看一区| 欧美婷婷久久五月精品三区| 成人国产精品久久久| 伊人影院久久| 少妇av片在线观看| 欧美成人猛片aaaaaaa| 日韩电影免费观| 日韩视频在线免费播放| 99re66热这里只有精品3直播 | 久艹视频在线观看| 国产亚洲精品美女久久久| 精品成人18| 免费在线观看毛片网站| 亚洲精品乱码久久久久久黑人| 天堂视频中文在线| 7777精品久久久大香线蕉小说| 国产精品日本| 欧产日产国产v| 国产亚洲精品va在线观看| 亚洲日本va午夜在线电影| 日韩欧美xxxx| 亚洲国产综合在线| 免费高清完整在线观看|