Навыки docker-expert
📦

docker-expert

Безопасно

Оптимизация Docker-контейнеров

Docker-контейнеры часто страдают от больших размеров образов, уязвимостей безопасности и низкой производительности сборки. Этот навык предоставляет экспертные рекомендации по многоэтапным сборкам, усилению безопасности и готовству паттернамым к производ оркестрации для создания эффективных и безопасных развёртываний контейнеров.

Поддерживает: Claude Codex Code(CC)
📊 71 Адекватно
1

Скачать ZIP навыка

2

Загрузить в Claude

Перейдите в Settings → Capabilities → Skills → Upload skill

3

Включите и начните использовать

Протестировать

Использование «docker-expert». Optimize this Dockerfile: FROM node:18 WORKDIR /app COPY package*.json . RUN npm install COPY . . RUN npm run build CMD ["node", "dist/index.js"]

Ожидаемый результат:

Here's an optimized multi-stage Dockerfile:

**Key improvements:**
1. Separate dependency installation from source code to maximize layer caching
2. Add non-root user for security
3. Use npm ci for deterministic installs
4. Prune production dependencies

```dockerfile
FROM node:18-alpine AS deps
WORKDIR /app
COPY package*.json .
RUN npm ci --only=production && npm cache clean --force

FROM node:18-alpine AS build
WORKDIR /app
COPY package*.json .
RUN npm ci
COPY . .
RUN npm run build && npm prune --production

FROM node:18-alpine
RUN addgroup -g 1001 -S appgroup && adduser -S appuser -u 1001 -G appgroup
WORKDIR /app
COPY --from=deps --chown=appuser:appgroup /app/node_modules ./node_modules
COPY --from=build --chown=appuser:appgroup /app/dist ./dist
USER 1001
EXPOSE 3000
CMD ["node", "dist/index.js"]
```

Использование «docker-expert». Create a Docker Compose setup for a Node.js API with PostgreSQL that includes health checks and resource limits.

Ожидаемый результат:

Here's a production-ready Docker Compose configuration:

**Features included:**
- Service health checks with dependencies
- Separate networks for frontend and backend
- Resource limits to prevent resource exhaustion
- External secrets for credentials
- Named volume for data persistence

```yaml
version: '3.8'
services:
api:
build: .
depends_on:
db:
condition: service_healthy
networks:
- backend
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M

db:
image: postgres:15-alpine
environment:
POSTGRES_DB_FILE: /run/secrets/db_name
POSTGRES_USER_FILE: /run/secrets/db_user
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_name
- db_user
- db_password
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- backend
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5

networks:
backend:
driver: bridge
internal: true

volumes:
postgres_data:

secrets:
db_name:
external: true
# ... additional secrets
```

Аудит безопасности

Безопасно
v1 • 2/7/2026

Static analysis detected 53 patterns (external_commands, network, filesystem, env_access) but all are false positives. The flagged bash code blocks are documentation examples, not execution; health check URLs target localhost; Docker commands read standard container state; and secrets patterns demonstrate security best practices. No malicious patterns confirmed.

1
Просканировано файлов
409
Проанализировано строк
0
находки
1
Всего аудитов
Проблем безопасности не найдено
Проверено: claude

Оценка качества

38
Архитектура
100
Сопровождаемость
87
Контент
32
Сообщество
100
Безопасность
91
Соответствие спецификации

Что вы можете построить

Уменьшение размера образа контейнера

Команда разработки борется с Docker-образами размером в несколько гигабайт, вызывающими медленное развёртывание. Навык анализирует их Dockerfile и реализует многоэтапные сборки, оптимизируя кэширование слоёв и выбирая подходящие базовые образы для уменьшения размера образа до 80%.

Усиление безопасности для production-среды

Команде безопасности необходимо обеспечить работу контейнеров с минимальными привилегиями. Навык проверяет конфигурации контейнеров и реализует непривилегированных пользователей, файловые системы только для чтения, правильное управление секретами и ограничения возможностей в соответствии с принципами эшелонированной защиты.

Настройка оркестрации Docker Compose

Стартапу необходимо настроить среду разработки с несколькими сервисами с правильными зависимостями, проверками работоспособности и сетевой изоляцией. Навык создаёт готовые к производству конфигурации Docker Compose с обнаружением сервисов, ограничениями ресурсов и переопределениями для конкретных сред.

Попробуйте эти промпты

Базовый анализ Dockerfile
Review my Dockerfile and suggest optimizations for better layer caching and faster builds. Current file:

```dockerfile
${dockerfile_content}
```
Конфигурация безопасности
Analyze this Dockerfile for security issues and recommend hardening measures:

```dockerfile
${dockerfile_content}
```

Focus on: user permissions, secrets exposure, base image selection, and runtime security.
Настройка нескольких сервисов
Create a Docker Compose configuration for a ${application_type} application with:
- ${service_count} services: ${service_names}
- Database: ${database_type}
- Health checks required
- Resource limits for production
- Environment: ${environment_type}
Полная стратегия контейнеризации
Help me create a complete containerization strategy for my ${application_name} application:

1. Current project structure:
${file_structure}

2. Requirements:
   - Framework: ${framework}
   - Production deployment: ${deployment_target}
   - Security compliance: ${compliance_requirements}

Provide:
- Optimized multi-stage Dockerfile
- Docker Compose for dev/staging/prod
- Security hardening checklist
- Resource allocation recommendations

Лучшие практики

  • Используйте многоэтапные сборки для разделения зависимостей сборки от среды выполнения, сохраняя production-образы минимальными и безопасными
  • Всегда запускайте контейнеры от имени непривилегированных пользователей с конкретным UID/GID для ограничения рисков повышения привилегий
  • Реализуйте проверки работоспособности для всех сервисов для обеспечения правильного порядка запуска и обнаружения сбоев

Избегать

  • Установка инструментов сборки (gcc, make) в production-образах увеличивает поверхность атаки без необходимости
  • Жёсткое кодирование секретов в переменных окружения или слоях Dockerfile раскрывает учётные данные в истории образа
  • Запуск контейнеров с привилегиями по умолчанию без ограничений возможностей или ограничений ресурсов

Часто задаваемые вопросы

В чём разница между базовыми образами Alpine и distroless?
Alpine-образы — это минимальные дистрибутивы Linux (около 5 МБ) с менеджером пакетов для гибкости. Distroless-образы содержат только ваше приложение и зависимости среды выполнения (около 20-50 МБ) без оболочки или менеджера пакетов, обеспечивая более высокую безопасность за счёт уменьшения поверхности атаки. Выбирайте Alpine для гибкости во время разработки и distroless для безопасности в production.
Как многоэтапные сборки улучшают безопасность?
Многоэтапные сборки разделяют среду сборки от среды выполнения. Инструменты сборки, исходный код и промежуточные артефакты удаляются после сборки, оставляя только финальные production-артефакты в развёртываемом образе. Это предотвращает раскрытие секретов времени сборки и уменьшает поверхность атаки образа.
Какой рекомендуемый способ управления секретами в Docker?
Используйте Docker Secrets (для Swarm) или монтирование секретов BuildKit (для сборок) для передачи конфиденциальных данных. Никогда не запекайте секреты в образы или переменные окружения. Секреты должны поступать из защищённых внешних источников и монтироваться во время выполнения или сборки только там, где это необходимо.
Как оптимизировать кэширование слоёв в Docker?
Упорядочивайте инструкции Dockerfile от наименее к наиболее часто изменяющимся: базовый образ, зависимости, конфигурация, затем исходный код. Сначала копируйте файлы зависимостей (package*.json), выполняйте команды установки, затем копируйте исходный код. Таким образом, установка зависимостей кэшируется, если только файлы пакетов не изменятся.
Когда использовать docker-compose, а когда kubernetes?
Docker Compose идеально подходит для локальной разработки, тестирования и простых многоконтейнерных приложений. Он работает на одном хосте. Kubernetes разработан для production-оркестрации между несколькими узлами с функциями, такими как автоматическое масштабирование, последовательные обновления и самовосстановление. Начните с Compose для разработки и переходите к Kubernetes, когда вам потребуется production-оркестрация.
Как проверки работоспособности влияют на запуск контейнеров?
Проверки работоспособности позволяют использовать условия depends_on в Compose для ожидания готовности сервисов. Без проверок работоспособности контейнеры запускаются немедленно, что может вызвать сбои подключения. Правильно настроенная проверка работоспособности гарантирует, что зависимые сервисы ожидают, пока базы данных будут готовы принимать подключения.

Сведения для разработчиков

Автор

sickn33

Лицензия

MIT

Ссылка

main

Структура файлов

📄 SKILL.md