تخطَّ إلى المحتوى

Chainguard Images

صور حاويات مصغرة خالية من الثغرات مبنية على Wolfi Linux لسلاسل توريد البرمجيات الآمنة.

الأمرالوصف
docker pull cgr.dev/chainguard/static:latestسحب صورة قاعدة ثابتة مصغرة
docker pull cgr.dev/chainguard/busybox:latestسحب صورة busybox للتصحيح
docker pull cgr.dev/chainguard/wolfi-base:latestسحب صورة Wolfi الأساسية مع shell
docker pull cgr.dev/chainguard/python:latestسحب صورة تشغيل Python
docker pull cgr.dev/chainguard/node:latestسحب صورة تشغيل Node.js
docker pull cgr.dev/chainguard/go:latestسحب صورة بناء Go
docker pull cgr.dev/chainguard/nginx:latestسحب صورة خادم الويب nginx
docker pull cgr.dev/chainguard/git:latestسحب صورة git مصغرة
docker pull cgr.dev/chainguard/jdk:latestسحب صورة Java JDK
docker pull cgr.dev/chainguard/rust:latestسحب صورة بناء Rust
docker pull cgr.dev/chainguard/redis:latestسحب صورة خادم Redis
docker pull cgr.dev/chainguard/postgres:latestسحب صورة PostgreSQL
docker pull cgr.dev/chainguard/curl:latestسحب صورة curl مصغرة
الأمرالوصف
وسم :latestأحدث بناء، جاهز للإنتاج
وسم :latest-devنسخة تطوير مع shell ومدير حزم
:latest على صور -devتتضمن apk و shell وأدوات التصحيح
cgr.dev/chainguard-private/IMAGEسجل صور خاص/مؤسسي
تثبيت بالبصمة @sha256:abc123...تثبيت بناء الصورة بالضبط لضمان إعادة الإنتاج
الأمرالوصف
FROM cgr.dev/chainguard/static:latestاستخدام الصورة الثابتة في Dockerfile
FROM cgr.dev/chainguard/python:latest-devاستخدام نسخة dev مع pip و shell
FROM cgr.dev/chainguard/node:latest AS buildاستخدام كمرحلة بناء
FROM cgr.dev/chainguard/go:latest AS builderاستخدام صورة Go للتجميع
docker run --rm cgr.dev/chainguard/wolfi-base shتشغيل shell تفاعلي
docker run --rm -p 8080:8080 cgr.dev/chainguard/nginxتشغيل خادم nginx
docker run --rm cgr.dev/chainguard/python -- python -c "print('hello')"تشغيل أمر Python سريع
# مرحلة البناء
FROM cgr.dev/chainguard/go:latest AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /server ./cmd/server

# مرحلة التشغيل - بدون توزيعة، بدون shell، بدون مدير حزم
FROM cgr.dev/chainguard/static:latest
COPY --from=builder /server /server
EXPOSE 8080
ENTRYPOINT ["/server"]
# مرحلة البناء مع pip متاح
FROM cgr.dev/chainguard/python:latest-dev AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
COPY . .

# مرحلة التشغيل - Python مصغر، بدون pip، بدون shell
FROM cgr.dev/chainguard/python:latest
COPY --from=builder /install /usr/local
COPY --from=builder /app /app
WORKDIR /app
ENTRYPOINT ["python", "-m", "myapp"]

بناء Node.js متعدد المراحل

Section titled “بناء Node.js متعدد المراحل”
# مرحلة البناء
FROM cgr.dev/chainguard/node:latest-dev AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

# مرحلة التشغيل
FROM cgr.dev/chainguard/node:latest
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
EXPOSE 3000
ENTRYPOINT ["node", "dist/index.js"]
# مرحلة البناء
FROM cgr.dev/chainguard/jdk:latest-dev AS builder
WORKDIR /app
COPY . .
RUN ./gradlew build --no-daemon -x test

# مرحلة التشغيل
FROM cgr.dev/chainguard/jre:latest
COPY --from=builder /app/build/libs/app.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
الأمرالوصف
chainctl auth loginالمصادقة مع Chainguard
chainctl auth login --headlessتسجيل الدخول في بيئات بدون واجهة
chainctl auth configure-dockerتكوين Docker لاستخدام سجل Chainguard
chainctl images listعرض صور Chainguard المتاحة
chainctl images repos list --group=GROUP_IDعرض مستودعات الصور لمجموعة
chainctl images diff IMAGE1 IMAGE2مقارنة نسختين من الصورة
chainctl images history cgr.dev/chainguard/pythonعرض تاريخ إصدارات الصورة
تصفح images.chainguard.devكتالوج ويب لجميع الصور
الأمرالوصف
crane ls cgr.dev/chainguard/pythonعرض الوسوم المتاحة لصورة
crane manifest cgr.dev/chainguard/python:latestعرض بيان الصورة
crane config cgr.dev/chainguard/python:latestعرض تكوين الصورة
docker inspect cgr.dev/chainguard/python:latestفحص بيانات الصورة الوصفية
docker history cgr.dev/chainguard/python:latestعرض طبقات الصورة
dive cgr.dev/chainguard/python:latestاستكشاف طبقات الصورة بشكل تفاعلي
الأمرالوصف
cosign verify --certificate-oidc-issuer=https://token.actions.githubusercontent.com --certificate-identity-regexp='chainguard' cgr.dev/chainguard/pythonالتحقق من توقيع الصورة
cosign verify-attestation --type spdx cgr.dev/chainguard/pythonالتحقق من شهادة SBOM
cosign verify-attestation --type vuln cgr.dev/chainguard/pythonالتحقق من شهادة الثغرات
cosign tree cgr.dev/chainguard/pythonعرض عناصر سلسلة التوريد
cosign verify-attestation --type slsaprovenance cgr.dev/chainguard/pythonالتحقق من مصدر SLSA
# التحقق من توقيع صورة Chainguard
cosign verify \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest

# التحقق من شهادة SBOM وعرضها
cosign verify-attestation \
  --type spdx \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest | jq -r '.payload' | base64 -d | jq .

# التحقق من شهادة فحص الثغرات
cosign verify-attestation \
  --type vuln \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
  --certificate-identity-regexp="chainguard" \
  cgr.dev/chainguard/python:latest
الأمرالوصف
grype cgr.dev/chainguard/pythonفحص الصورة بحثاً عن ثغرات باستخدام Grype
grype cgr.dev/chainguard/python --only-fixedعرض الثغرات القابلة للإصلاح فقط
trivy image cgr.dev/chainguard/pythonالفحص باستخدام ماسح Trivy
trivy image --severity HIGH,CRITICAL cgr.dev/chainguard/pythonفحص العالية/الحرجة فقط
docker scout cves cgr.dev/chainguard/pythonالفحص باستخدام Docker Scout
chainctl images vulns cgr.dev/chainguard/pythonعرض الثغرات المعروفة عبر chainctl
الأمرالوصف
apk updateتحديث فهرس الحزم (في صور dev)
apk add curlتثبيت حزمة
apk add --no-cache python3 py3-pipالتثبيت بدون تخزين مؤقت للفهرس
apk add --virtual .build-deps gcc musl-devتثبيت تبعيات بناء افتراضية
apk del .build-depsإزالة مجموعة الحزم الافتراضية
apk del curlإزالة حزمة
apk list --installedعرض الحزم المثبتة
apk search nginxالبحث عن الحزم المتاحة
apk info python3عرض تفاصيل الحزمة
apk info -L python3عرض ملفات الحزمة
الأمرالوصف
melange keygenإنشاء مفاتيح توقيع للحزم
melange build recipe.yaml --signing-key melange.rsaبناء حزمة APK من وصفة
melange build recipe.yaml --arch x86_64,aarch64البناء لعدة معماريات
melange bump recipe.yaml 1.2.3رفع الإصدار في الوصفة
package:
  name: myapp
  version: 1.0.0
  epoch: 0
  description: تطبيق مخصص
  copyright:
    - license: Apache-2.0

environment:
  contents:
    packages:
      - build-base
      - go
      - ca-certificates-bundle

pipeline:
  - uses: git-checkout
    with:
      repository: https://github.com/org/myapp
      tag: v${{package.version}}

  - uses: go/build
    with:
      packages: ./cmd/myapp
      output: myapp
      ldflags: -s -w

  - uses: strip
الأمرالوصف
apko build config.yaml tag output.tarبناء صورة OCI من تكوين YAML
apko publish config.yaml tagبناء ودفع الصورة إلى السجل
apko build config.yaml tag output.tar --arch x86_64,aarch64بناء صورة متعددة المعماريات
docker load < output.tarتحميل الصورة المبنية إلى Docker
contents:
  packages:
    - ca-certificates-bundle
    - wolfi-baselayout
    - myapp
  repositories:
    - https://packages.wolfi.dev/os
    - /path/to/local/packages

accounts:
  groups:
    - groupname: nonroot
      gid: 65532
  users:
    - username: nonroot
      uid: 65532
      gid: 65532
  run-as: 65532

entrypoint:
  command: /usr/bin/myapp

archs:
  - x86_64
  - aarch64

environment:
  APP_ENV: production
  PORT: "8080"

قائمة مواد البرمجيات والمصدر

Section titled “قائمة مواد البرمجيات والمصدر”
الأمرالوصف
cosign download sbom cgr.dev/chainguard/pythonتنزيل SBOM الصورة
syft cgr.dev/chainguard/pythonإنشاء SBOM باستخدام Syft
syft cgr.dev/chainguard/python -o spdx-jsonإنشاء SBOM بتنسيق SPDX
syft cgr.dev/chainguard/python -o cyclonedx-jsonإنشاء SBOM بتنسيق CycloneDX
cosign download attestation cgr.dev/chainguard/pythonتنزيل جميع الشهادات
cosign verify-attestation --type slsaprovenance cgr.dev/chainguard/pythonالتحقق من مصدر SLSA
chainctl images vulns cgr.dev/chainguard/pythonعرض الثغرات المعروفة
# Sigstore Policy Controller - طلب توقيعات Chainguard
apiVersion: policy.sigstore.dev/v1beta1
kind: ClusterImagePolicy
metadata:
  name: require-chainguard-signatures
spec:
  images:
    - glob: "cgr.dev/chainguard/**"
    - glob: "cgr.dev/chainguard-private/**"
  authorities:
    - keyless:
        url: https://fulcio.sigstore.dev
        identities:
          - issuerRegExp: ".*"
            subjectRegExp: ".*chainguard.*"
        ctlog:
          url: https://rekor.sigstore.dev
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-chainguard-images
spec:
  validationFailureAction: Enforce
  background: true
  rules:
    - name: check-image-registry
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "يُسمح فقط بصور Chainguard من cgr.dev."
        pattern:
          spec:
            containers:
              - image: "cgr.dev/chainguard/*"
            initContainers:
              - image: "cgr.dev/chainguard/*"
# GitHub Actions - التحقق والفحص قبل النشر
name: Image Verification
on:
  push:
    branches: [main]

jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - name: Install cosign
        uses: sigstore/cosign-installer@v3

      - name: Verify image signature
        run: |
          cosign verify \
            --certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
            --certificate-identity-regexp="chainguard" \
            cgr.dev/chainguard/python:latest

      - name: Scan for vulnerabilities
        uses: anchore/grype-action@v0
        with:
          image: cgr.dev/chainguard/python:latest
          fail-on: high
  1. استخدام البناء متعدد المراحل — البناء في صور -dev (التي تحتوي على مُجمّعات ومديري حزم) ونسخ القطعة النهائية فقط إلى صورة التشغيل المصغرة.

  2. تثبيت الصور بالبصمة — استخدام بصمات @sha256:... بدلاً من الوسوم لعمليات النشر الإنتاجية لضمان إعادة الإنتاج.

  3. اختيار الصورة الأساسية الصحيحة — استخدام static للثنائيات المُجمّعة بدون تبعيات نظام التشغيل، wolfi-base عند الحاجة إلى shell، والصور الخاصة باللغة للغات المُفسّرة.

  4. التحقق من التوقيعات في CI/CD — التحقق دائماً من توقيعات صور Chainguard باستخدام cosign قبل البناء أو النشر.

  5. فحص حتى صور خالية من الثغرات — تشغيل فحوصات الثغرات كخطوة تحقق؛ يجب أن تُرجع صور Chainguard صفر نتائج، مما يؤكد أن خط الأنابيب يستخدم صوراً أصلية.

  6. استخدام نسخ -dev في مراحل البناء فقط — لا تُرسل أبداً صور -dev إلى الإنتاج؛ فهي تتضمن أدوات تزيد سطح الهجوم.

  7. التشغيل كـ nonroot — صور Chainguard تستخدم افتراضياً مستخدم nonroot؛ حافظ على ذلك في ملفات Dockerfile بعدم التبديل إلى root.

  8. تطبيق سياسات الصور — استخدام Kyverno أو OPA Gatekeeper أو Sigstore Policy Controller لتقييد سجلات الحاويات في مجموعاتك.

  9. إنشاء وتخزين SBOMs — استخدام Syft أو cosign لتنزيل SBOMs للامتثال ومسارات التدقيق.

  10. الحفاظ على تحديث الصور — تُعيد Chainguard بناء الصور بشكل متكرر؛ قم بتحديث بصماتك بانتظام للحصول على أحدث إصلاحات الأمان.