
AI-संचालित Docker सुरक्षा स्कैनर जो कमजोरियों को सरल अंग्रेजी में समझाता है। एक OWASP लैब प्रोजेक्ट।
<div align="center"> [](https://owasp.org/DockSec/) [](https://owasp.org/DockSec/) [](https://owasp.slack.com/archives/C0APXGCUW7M) [](https://github.com/OWASP/DockSec/actions) <br>[](https://www.bestpractices.dev/projects/12939) [](https://github.com/OWASP/DockSec/blob/main/LICENSE) [](https://github.com/OWASP/DockSec/commits/main/) [](https://github.com/OWASP/DockSec/graphs/contributors) [](https://github.com/OWASP/DockSec/network/members) [](https://github.com/OWASP/DockSec/stargazers)  [](https://github.com/OWASP/DockSec/issues) [](https://github.com/OWASP/DockSec/pulls) [](https://github.com/OWASP/DockSec/commit/80664db8935e4b5ab44df5867913e) <picture> <source srcset="https://raw.githubusercontent.com/OWASP/DockSec/main/images/docksec-logo-for-github.png" media="(prefers-color-scheme: dark)"> <img src="https://assets.kitploit.com/production/public/readmes/39487/d30ee74abf3ad22a447ed36ba3010acab606147bc21702a1fb428b8633298caf.png" alt="DockSec Logo" width="600"> </picture><br> <img src="https://assets.kitploit.com/production/public/readmes/39487/009ae678c48ab2738e17c17c238c83cb2481510fbc2bf9d7284ea80ec487feda.png" alt="OWASP Logo" width="300"> # [DockSec](https://owasp.org/DockSec/) **AI-संचालित Docker सुरक्षा स्कैनर जो कमज़ोरियों को सरल भाषा में समझाता है** </div> --- ## DockSec क्या है? DockSec एक **OWASP Lab Project** है जो जटिल सुरक्षा स्कैन परिणामों और डेवलपर के लिए उपयोगी समाधानों के बीच की खाई को पाटता है। यह उद्योग-मानक स्कैनर (Trivy, Hadolint, Docker Scout) को AI के साथ एकीकृत करके **संदर्भ-जागरूक सुरक्षा विश्लेषण** प्रदान करता है। 200+ CVE की सूची से आपको अभिभूत करने के बजाय, DockSec: - **प्राथमिकता देता है** उन बातों को जो वास्तव में आपके विशिष्ट कंटेनर सेटअप को प्रभावित करती हैं। - **समझाता है** कमज़ोरियों को सरल भाषा में, केवल सुरक्षा शब्दजाल में नहीं। - **सुझाव देता है** आपके Dockerfile के लिए विशिष्ट समाधान। - **तैयार करता है** आपकी टीम के लिए पेशेवर, इंटरैक्टिव सुरक्षा रिपोर्ट। सब कुछ स्थानीय रूप से स्कैन होता है; आपकी मशीन से केवल एक चीज़ बाहर जाती है - आपके द्वारा चुने गए AI प्रदाता को भेजी गई (गुप्त-संपादित) फ़ाइल सामग्री - और स्थानीय मॉडल या केवल-स्कैन मोड के साथ, कुछ भी बाहर नहीं जाता। देखें [डेटा प्रवाह और गोपनीयता](#data-flow-and-privacy)। --- ## यह कैसे काम करता है <div align="center"> <img src="https://assets.kitploit.com/production/public/readmes/39487/99b4247f599cc8f7a260f285815f8793ca4d2c050ea6656480818a846d590fb0.png" alt="DockSec Workflow" width="800"> <p><em>DockSec कार्यप्रवाह: स्कैनिंग से उपयोगी अंतर्दृष्टि तक</em></p> </div> DockSec पाँच-चरणीय पाइपलाइन का पालन करता है: 1. **स्कैन**: आपके वातावरण पर स्थानीय रूप से Trivy (इमेज कमज़ोरियाँ और Dockerfile गलत कॉन्फ़िगरेशन), Hadolint, और Docker Scout चलाता है। 2. **प्राथमिकता**: प्रत्येक CVE निष्कर्ष को गंभीरता और उसकी [EPSS](https://www.first.org/epss/) शोषण संभावना के संयोजन से रैंक करता है, ताकि सूची इस आधार पर क्रमबद्ध हो कि पहले क्या ठीक करना है, न कि पहले क्या पाया गया। 3. **सहसंबंध**: [शोषण श्रृंखलाओं](https://github.com/owasp/docksec/blob/main/docs/exploit-chains.md) का पता लगाता है जहाँ अलग-अलग निष्कर्ष एक हमला पथ में मिल जाते हैं - एक क्रेडेंशियलयुक्त डेटाबेस जिस तक इंटरनेट-सामना करने वाली सेवा पहुँच सकती है, वह एक श्रृंखला है, दो असंबंधित निष्कर्ष नहीं। API कुंजी के साथ, एक AI पास पूर्ण स्कैन आउटपुट पर विचार करके इसे रैंक, समझाता और विस्तारित करता है। 4. **सिफ़ारिश**: कॉपी-एंड-रन फिक्स कमांड और ठोस Dockerfile या compose परिवर्तन तैयार करता है, और बताता है कि वे कितने निष्कर्षों को हल करते हैं। 5. **रिपोर्ट**: उपयोगी परिणामों को HTML, PDF, JSON, CSV, Markdown, SARIF, और CycloneDX SBOM के रूप में निर्यात करता है। --- ## शुरुआत करना ### 1. पूर्वापेक्षाएँ DockSec स्थानीय स्कैनर को ऑर्केस्ट्रेट करता है, इसलिए इसे आवश्यकता है: | आवश्यकता | किसके लिए आवश्यक | इंस्टॉल | |---|---|---| | Python 3.12+ | DockSec स्वयं | [python.org](https://www.python.org/downloads/) | | Trivy | सभी स्कैन (आवश्यक) | `brew install trivy` या [Trivy docs](https://trivy.dev/latest/getting-started/installation/) | | Hadolint | Dockerfile लिंटिंग | `brew install hadolint` या [Hadolint docs](https://github.com/hadolint/hadolint#install) | | Docker | इमेज स्कैन (`-i`) | [Docker docs](https://docs.docker.com/get-docker/) | या DockSec को आपके लिए Trivy और Hadolint इंस्टॉल करने दें:```bash python -m docksec.setup_external_tools ``` ### 2. DockSec इंस्टॉल करें```bash # Full install with AI analysis support (recommended) pip install "docksec[ai]" # Or the slim, scan-only core (no LLM dependencies, no API key needed) pip install docksec ``` ### 3. अपना पहला स्कैन चलाएँ स्थानीय स्कैनिंग के लिए किसी API key की आवश्यकता नहीं है:```bash docksec Dockerfile --scan-only ``` हर स्कैन एक परिणाम सारांश के साथ समाप्त होता है: एक गंभीरता तालिका, एक रेटिंग के साथ 0-100 सुरक्षा स्कोर, एक "Quick take" कार्रवाई ब्लॉक, उत्पन्न रिपोर्ट (डिफ़ॉल्ट रूप से `~/.docksec/results/` में सहेजी जाती हैं), और एक सुझाया गया अगला कमांड। ### 4. AI विश्लेषण सक्षम करें AI विश्लेषण निष्कर्षों की व्याख्या करता है और समाधान सुझाता है। एक प्रदाता चुनें, उसकी API कुंजी सेट करें, और चलाएँ:```bash # OpenAI (default provider) export OPENAI_API_KEY="sk-..." docksec Dockerfile # Anthropic Claude export ANTHROPIC_API_KEY="sk-ant-..." docksec Dockerfile --ai-only --provider anthropic --model claude-sonnet-5 # Google Gemini export GOOGLE_API_KEY="..." docksec Dockerfile --ai-only --provider google # Ollama (fully local, no API key, data never leaves your machine) docksec Dockerfile --ai-only --provider ollama --model llama3.1 ``` प्रत्येक प्रोवाइडर का एक उपयुक्त डिफ़ॉल्ट मॉडल होता है (OpenAI: `gpt-4o`, Anthropic: `claude-haiku-4-5`, Google: `gemini-1.5-pro`, Ollama: `llama3.1`), इसलिए `--model` वैकल्पिक है। फ़्लैग्स को बार-बार दोहराने से बचने के लिए, एनवायरनमेंट वेरिएबल्स सेट करें (या उन्हें उस डायरेक्टरी में `.env` फ़ाइल में रखें जहाँ से आप चलाते हैं - DockSec इसे स्वचालित रूप से लोड करता है):```bash export LLM_PROVIDER=anthropic export LLM_MODEL=claude-sonnet-5 docksec Dockerfile ``` किसी भी सामग्री को AI प्रदाता को भेजे जाने से पहले, गुप्त-दिखने वाले मान (पासवर्ड, टोकन, API कुंजियाँ, निजी कुंजी ब्लॉक) स्वचालित रूप से मास्क कर दिए जाते हैं। देखें [डेटा प्रवाह और गोपनीयता](#data-flow-and-privacy)। ### 5. या कंटेनर इमेज चलाएँ (कुछ भी इंस्टॉल करने की आवश्यकता नहीं) प्रकाशित इमेज में Trivy और Hadolint के पिन किए गए संस्करण बंडल हैं, इसलिए कुछ भी इंस्टॉल करने की आवश्यकता नहीं है और कुछ भी कॉन्फ़िगर करने की आवश्यकता नहीं है:```bash docker run --rm -v "$PWD:/github/workspace" \ -e INPUT_DOCKERFILE=Dockerfile \ -e INPUT_SCAN_ONLY=true \ ghcr.io/owasp/docksec:latest ``` हर रिलीज़ पर मल्टी-आर्क (amd64 और arm64) प्रकाशित। CI में `latest` के बजाय किसी विशिष्ट संस्करण (`ghcr.io/owasp/docksec:2026.9.21`) या किसी माइनर सीरीज़ (`ghcr.io/owasp/docksec:2026.9`) पर पिन करें। हर इमेज में एक बिल्ड प्रोवेनेंस अटेस्टेशन होता है:```bash gh attestation verify oci://ghcr.io/owasp/docksec:latest --repo OWASP/DockSec ``` यह इमेज GitHub Action के समान `INPUT_*` वेरिएबल्स को पढ़ती है, इसलिए कोई भी Action इनपुट यहाँ काम करता है: `INPUT_IMAGE`, `INPUT_COMPOSE`, `INPUT_SEVERITY`, `INPUT_FAIL_ON`, `INPUT_FORMAT`, `INPUT_SARIF`, `INPUT_OUTPUT_DIR`। कंटेनर बंद होने के बाद रिपोर्ट्स को बनाए रखने के लिए उन्हें माउंट पर कहीं लिखें:```bash docker run --rm -v "$PWD:/github/workspace" \ -e INPUT_COMPOSE=docker-compose.yml \ -e INPUT_SCAN_ONLY=true \ -e INPUT_FORMAT=json,html \ -e INPUT_OUTPUT_DIR=/github/workspace/docksec-reports \ ghcr.io/owasp/docksec:latest ``` ### 6. या GitHub Action का उपयोग करें```yaml - name: Run DockSec AI Scanner uses: OWASP/[email protected] with: dockerfile: 'Dockerfile' openai_api_key: ${{ secrets.OPENAI_API_KEY }} ``` --- ## सामान्य कमांड```bash # Scan Dockerfile + Docker image (AI + scanners) docksec Dockerfile -i myapp:latest # Scan a Docker Compose file and all its services docksec --compose docker-compose.yml # Scan only a Docker image docksec --image-only -i myapp:latest # Fast local scan, no AI, no API key docksec Dockerfile --scan-only # Choose which severity levels the image scan reports (default: CRITICAL,HIGH) docksec -i myapp:latest --image-only --severity CRITICAL,HIGH,MEDIUM # Fail the build (exit 1) if any finding is HIGH or above docksec -i myapp:latest --image-only --fail-on high # Write only the report formats you want, to a directory of your choice docksec Dockerfile --scan-only --format json,html --output-dir ./reports # Write a Markdown report for posting directly into a pull request comment docksec Dockerfile --scan-only --format markdown # Print results as JSON to stdout for scripts and CI pipelines docksec -i myapp:latest --image-only --json # Write a SARIF report for GitHub Code Scanning docksec Dockerfile --scan-only --sarif # Write a CycloneDX SBOM of an image for supply-chain tooling docksec --image-only -i myapp:latest --sbom # Fully offline scan: local Trivy DB, no network, no AI docksec --image-only -i myapp:latest --offline # Save today's findings as a baseline, then only gate on new findings later docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --update-baseline docksec -i myapp:latest --image-only --baseline .docksec-baseline.json --fail-on high # Suppress triaged findings with an auditable ignore file docksec -i myapp:latest --image-only --ignore-file .docksec-ignore.yml # Force a fresh scan, bypassing the results cache docksec -i myapp:latest --image-only --no-cache # Install AI-assistant skill files (Claude Code, Cursor, Copilot, and more) docksec install-skill # Output control docksec Dockerfile --scan-only --quiet # warnings, errors, summary only docksec Dockerfile --scan-only --verbose # INFO-level diagnostics on stderr docksec Dockerfile --scan-only --verbose --log-file logs/docksec.log docksec Dockerfile --scan-only --compact-output # shorter per-finding output docksec Dockerfile --no-color # also honors NO_COLOR # Apply the mechanical Dockerfile fixes (keeps a .bak, re-scans, shows the delta) docksec Dockerfile --scan-only --fix --dry-run # print the diff, change nothing docksec Dockerfile --scan-only --fix # Rank findings by severity alone, with no EPSS lookup and no network call docksec Dockerfile --scan-only --no-epss # Treat a scan that could not complete as a failure, not a pass docksec Dockerfile --scan-only --fail-on high --incomplete-policy fail ``` --- ## कॉन्फ़िगरेशन फ़ाइल अपने रिपॉज़िटरी की जड़ में एक `.docksec.yml` कमिट करें और पूरी टीम - और हर CI जॉब - एक ही नीति के तहत स्कैन करती है, बजाय इसके कि हर डेवलपर अपने खुद के फ़्लैग पास करे।```yaml # yaml-language-server: $schema=https://owasp.org/DockSec/docksec-config-schema.json severity: CRITICAL,HIGH fail_on: HIGH formats: [json, html] output_dir: ./security-reports rules: disabled: - compose-missing-healthcheck ``` हर सेटिंग वैकल्पिक है; आप जो भी छोड़ते हैं वह पर्यावरण चर पर और फिर अंतर्निहित डिफ़ॉल्ट पर वापस चला जाता है। एक पूर्ण एनोटेटेड उदाहरण [`examples/.docksec.yml`](https://github.com/owasp/docksec/blob/main/examples/.docksec.yml) में है। ### प्राथमिकता उच्चतम प्राथमिकता पहले:``` CLI flag > environment variable > .docksec.yml > built-in default ``` तो कमिट किया गया `severity: LOW` अभी भी कमांड लाइन पर `--severity CRITICAL` द्वारा, और एनवायरनमेंट में `DOCKSEC_DEFAULT_SEVERITY` द्वारा ओवरराइड होता है। ### Discovery DockSec वर्किंग डायरेक्टरी में `.docksec.yml` (या `.docksec.yaml`) खोजता है और फिर रिपॉज़िटरी रूट तक ऊपर जाता है, इसलिए मोनोरेपो सबडायरेक्टरी में मौजूद सर्विस टॉप लेवल पर कमिट की गई पॉलिसी को इनहेरिट करती है। खोज `.git` वाली डायरेक्टरी पर रुक जाती है, इसलिए यह कभी भी रिपॉज़िटरी के बाहर से कोई फ़ाइल नहीं उठाती। - `--config FILE` खोजने के बजाय एक विशिष्ट फ़ाइल का उपयोग करता है। - `--no-config` किसी भी कॉन्फ़िग फ़ाइल को अनदेखा करता है, ताकि CI रन रिप्रोड्यूसिबल हों। लागू कॉन्फ़िग फ़ाइल स्कैन बैनर में दिखाई जाती है, इसलिए यह हमेशा स्पष्ट रहता है कि कौन सी पॉलिसी लागू की गई थी। ### Settings | Setting | Equivalent flag | Notes | | --- | --- | --- | | `severity` | `--severity` | इमेज स्कैन के लिए severity लेवल | | `fail_on` | `--fail-on` | CI गेट थ्रेशोल्ड | | `formats` | `--format` | लिस्ट फ़ॉर्म: `[json, html]` | | `output_dir` | `--output-dir` | रिपोर्ट गंतव्य | | `provider` | `--provider` | `openai`, `anthropic`, `google`, `ollama` | | `model` | `--model` | प्रोवाइडर के लिए मॉडल नाम | | `offline` | `--offline` | नेटवर्क नहीं; AI और Docker Scout को छोड़ता है | | `skip_ai_scoring` | `--skip-ai-scoring` | डेप्रिकेटेड और अनदेखा किया गया; स्कोरिंग हमेशा डिटरमिनिस्टिक होती है | | `no_redact` | `--no-redact` | AI कॉल से पहले सीक्रेट्स को मास्क न करें | | `no_cache` | `--no-cache` | स्कैन कैश को बायपास करें | | `ignore_file` | `--ignore-file` | वेवर फ़ाइल पाथ | | `baseline` | `--baseline` | बेसलाइन फ़ाइल पाथ | | `rules.disabled` | - | पूरी तरह बंद करने के लिए रूल ID | एक अमान्य कॉन्फ़िग फ़ाइल - एक अज्ञात की, एक खराब severity - एक चेतावनी के बजाय एक हार्ड एरर है जो `2` के साथ एक्ज़िट होती है, इसलिए एक टूटी हुई पॉलिसी फ़ाइल कभी भी स्कैन को उन नियमों के तहत चलने का कारण नहीं बन सकती जिन्हें टीम ने कमिट नहीं किया। ### Editor autocomplete पहली लाइन पर मौजूद `# yaml-language-server:` कमेंट VS Code और JetBrains एडिटर्स में कम्पलीशन और इनलाइन वैलिडेशन देता है। स्कीमा [`docs/docksec-config-schema.json`](https://github.com/owasp/docksec/blob/main/docs/docksec-config-schema.json) पर पब्लिश की गई है और इसे `docksec --print-config-schema` के साथ रीजनरेट किया जा सकता है। ### Disabling rules `rules.disabled` एक चेक को पूरी तरह बंद कर देता है, हर जगह - इसे स्कोरिंग, रिपोर्ट्स, `--json`, और `--fail-on` गेट से पहले हटा दिया जाता है। इसका उपयोग उन चेक्स के लिए करें जो आपके एनवायरनमेंट पर लागू नहीं होते। उन अलग-अलग फाइंडिंग्स के लिए जिन्हें आपकी टीम ने ट्राइएज करके स्वीकार कर लिया है, [waiver file](#ignoring-findings-waivers) को प्राथमिकता दें, जिसकी एंट्रीज़ में एक कारण और एक एक्सपायरी डेट होती है और इसलिए वे ऑडिटेबल बनी रहती हैं। --- ## CI/CD Integration ### Exit codes DockSec CI-फ्रेंडली एक्ज़िट कोड्स का उपयोग करता है ताकि बिल्ड्स और शेल्स परिणामों पर प्रतिक्रिया दे सकें: | Code | Meaning | |---|---| | `0` | सफलता, `--fail-on` पर या उससे ऊपर कोई फाइंडिंग नहीं | | `1` | `--fail-on` थ्रेशोल्ड पर या उससे ऊपर फाइंडिंग्स | | `2` | उपयोग या आर्ग्युमेंट एरर | | `3` | टूल या रनटाइम एरर (स्कैन विफल, इमेज नहीं मिली, टूल्स गायब) | `--fail-on` हर स्ट्रक्चर्ड फाइंडिंग पर गेट करता है: इमेज वल्नरेबिलिटीज़, Dockerfile मिसकॉन्फ़िगरेशन्स, और compose मिसकॉन्फ़िगरेशन्स। जब `--fail-on` अनुरोधित `--severity` से नीचे होता है, तो स्कैन severity स्वचालित रूप से चौड़ी कर दी जाती है ताकि गेट उन फाइंडिंग्स को देख सके। ### Incomplete scans यदि कोई स्कैनर चल नहीं सकता, तो परिणामों में फाइंडिंग्स गायब हो सकती हैं बजाय वास्तव में क्लीन होने के। DockSec इसे Coverage ब्लॉक में और `--json` में `scan_info.completeness` के अंतर्गत एक डिटेक्शन गैप के रूप में रिपोर्ट करता है। उस स्थिति में `3` के साथ एक्ज़िट करने के लिए `--incomplete-policy fail` का उपयोग करें, ताकि CI एक ऐसे स्कैन पर पास न हो सके जो पूरा नहीं हुआ:```bash docksec Dockerfile --incomplete-policy fail ``` ### प्राथमिकता: पहले क्या ठीक करें प्रत्येक CVE निष्कर्ष को [EPSS](https://www.first.org/epss/) के विरुद्ध स्कोर किया जाता है, जो अनुमान लगाता है कि अगले 30 दिनों में इसका शोषण किए जाने की संभावना कितनी है। इसे गंभीरता के साथ मिलाकर चार स्तर बनते हैं: | स्तर | अर्थ | |---|---| | **अभी ठीक करें** | गंभीर या उच्च गंभीरता, और शोषण की संभावना के आधार पर शीर्ष 10% CVE में | | **जल्द ही ठीक करें** | गंभीर या उच्च गंभीरता, लेकिन शोषण कम सामान्य है | | **निगरानी रखें** | कम गंभीरता, लेकिन सक्रिय रूप से शोषित | | **कम प्राथमिकता** | कम गंभीरता, शोषण असामान्य | यह AI पास के बाहर DockSec द्वारा किया जाने वाला एकमात्र नेटवर्क कॉल है, और यह जानबूझकर संकीर्ण है: **केवल CVE ID भेजे जाते हैं** - कोई इमेज नाम नहीं, कोई फ़ाइल सामग्री नहीं, कोई पथ नहीं। स्कोर 24 घंटे के लिए कैश किए जाते हैं। `--offline` और `--no-epss` इसे अक्षम कर देते हैं, और कोई भी विफलता स्कैन को विफल करने के बजाय केवल-गंभीरता रैंकिंग पर वापस आ जाती है। ### एक्सप्लॉइट चेन प्रति-सेवा दृश्य एक बार में एक निष्कर्ष की रिपोर्ट करता है। DockSec यह भी रिपोर्ट करता है कि कहाँ अलग-अलग निष्कर्ष एक ही हमला पथ में संयोजित होते हैं:```text Exploit chains [HIGH] 'web' is internet-facing and can reach 'db' with a committed credential services: web, db combines: compose-plaintext-secret-env, compose-no-network-segmentation 'web' accepts connections from outside the host and shares the default network with 'db'. 'db' is not exposed directly, but its credential is in the compose file, so compromising 'web' yields authenticated access to it. Neither service looks critical on its own. break it: Put 'db' on its own network that 'web' does not join, or move POSTGRES_PASSWORD to a Docker secret. ``` चेन डिटेक्शन नियम-आधारित है, इसलिए यह `--scan-only` के साथ, ऑफ़लाइन, और बिना किसी API key के काम करता है, और हर रन में समान उत्तर देता है। AI पास इसे रैंक और विस्तारित करता है, न कि इसके लिए आवश्यक होता है। चेन `--json` में `exploit_chains` के अंतर्गत भी दिखाई देती हैं। पूरी सूची के लिए [exploit chains guide](https://github.com/owasp/docksec/blob/main/docs/exploit-chains.md) देखें और उनके द्वारा संयोजित प्रत्येक नियम के लिए [compose rule reference](https://github.com/owasp/docksec/blob/main/docs/rules/README.md) देखें। ### Fix commands स्कैन पहचानकर्ताओं की सूची के बजाय ठोस कमांड के साथ समाप्त होते हैं, और एक स्पष्ट कथन के साथ कि वे कितने निष्कर्षों को हल करते हैं:```text Fix commands > apt-get install --only-upgrade -y libgnutls30=3.7.9-2+deb12u7 CRITICAL - 3.7.9-2+deb12u4 -> 3.7.9-2+deb12u7 (CVE-2026-33845 +6) Dockerfile changes - [CRITICAL] Move the secret out of ENV; inject it at runtime (line 4) - [HIGH] Add a non-root USER before CMD/ENTRYPOINT (line 7) Applying all of the above resolves 37 of 93 finding(s); 56 have no mechanical fix yet. ``` ### मशीन-पठनीय आउटपुट `--json` मानव-पठनीय सारांश के बजाय stdout पर एक एकल JSON ऑब्जेक्ट प्रिंट करता है (स्कैन जानकारी, भेद्यताएँ, गंभीरता गणनाएँ, और कोई भी AI निष्कर्ष), ताकि इसे सीधे अन्य टूल्स में पाइप किया जा सके:```bash docksec -i myapp:latest --image-only --json | jq '.severity_counts' ``` `--json` अकेले के साथ, कोई रिपोर्ट फ़ाइलें नहीं लिखी जाती हैं; फ़ाइलें लिखने और उसी रन में JSON प्रिंट करने के लिए इसे `--format` के साथ संयोजित करें। `--json` मोड में सभी मानव-पठनीय संदेश stderr पर चले जाते हैं, इसलिए stdout में केवल JSON पेलोड ही होता है। ### रिपोर्ट प्रारूप `--format` फ़ाइल आउटपुट की अल्पविराम-पृथक सूची स्वीकार करता है: | प्रारूप | आपको क्या मिलता है | |--------|----------------| --- [Read more](https://github.com/owasp/docksec)