[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-docker-kakie-praktiki-bezopasnosti-sleduet-soblyudat-pri-rabote-s-docker":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},721,"kakie-praktiki-bezopasnosti-sleduet-soblyudat-pri-rabote-s-docker",17,"docker","Docker","🐳","Какие практики безопасности следует соблюдать при работе с Docker?","Безопасность Docker — это комплекс мер, направленных на минимизацию поверхности атаки, предотвращение утечки секретов и ограничение привилегий контейнеров.\n\n### 1. Не запускайте контейнер от root\n\n```dockerfile\nRUN addgroup -S appgroup && adduser -S appuser -G appgroup\nUSER appuser\n```\n\n### 2. Используйте минимальные базовые образы\n\n- `alpine` — минимальный Linux (~5 МБ)\n- `eclipse-temurin:17-jre-alpine` — вместо полного JDK\n- `distroless` (от Google) — образ без shell и утилит, только среда выполнения:\n\n```dockerfile\nFROM gcr.io\u002Fdistroless\u002Fjava17-debian12\nCOPY app.jar \u002Fapp.jar\nENTRYPOINT [\"java\", \"-jar\", \"\u002Fapp.jar\"]\n```\n\n### 3. Не храните секреты в образе\n\n```dockerfile\n# ПЛОХО — секрет останется в истории слоёв\nENV DB_PASSWORD=supersecret\nCOPY .env \u002Fapp\u002F.env\n\n# ХОРОШО — передавайте при запуске\n# docker run -e DB_PASSWORD=supersecret myapp\n```\n\n### 4. Используйте конкретные теги образов\n\n```dockerfile\n# ПЛОХО — непредсказуемо\nFROM eclipse-temurin:latest\n\n# ХОРОШО — воспроизводимо\nFROM eclipse-temurin:17.0.9_9-jre-alpine\n```\n\n### 5. Сканируйте образы на уязвимости\n\n```bash\ndocker scout cves myapp:1.0\n# Или с помощью Trivy\ntrivy image myapp:1.0\n```\n\n### 6. Используйте read-only файловую систему\n\n```bash\ndocker run --read-only --tmpfs \u002Ftmp myapp\n```\n\n### 7. Ограничивайте ресурсы\n\n```bash\ndocker run --memory=512m --cpus=1.0 myapp\n```\n\n### 8. Не устанавливайте лишнее в образ\n\n```dockerfile\nRUN apt-get update && \\\n    apt-get install -y --no-install-recommends необходимый-пакет && \\\n    rm -rf \u002Fvar\u002Flib\u002Fapt\u002Flists\u002F*\n```\n\n### 9. Дополнительные меры\n\n- Используйте `.dockerignore` для исключения конфиденциальных файлов\n- Обновляйте базовые образы регулярно, чтобы получать исправления безопасности\n- Используйте multi-stage builds для исключения инструментов сборки из финального образа\n\n> **На собеседовании:** назовите минимум 5 практик: непривилегированный пользователь, минимальные базовые образы, no secrets in image, конкретные теги, сканирование уязвимостей. Для senior-уровня упомяните distroless-образы, read-only filesystem, ограничение ресурсов и инструменты сканирования (Trivy, Docker Scout).","","senior",[15,16,17,18,7],"security","vulnerability-scanning","best-practices","distroless",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":35,"featuredSnippetReady":36},"Практики безопасности Docker — Gymterview","Безопасность Docker: непривилегированный USER, минимальные образы (alpine, distroless), no secrets in image, сканирование уязвимостей (Trivy), read-only FS.","Безопасность Docker: 9 практик — Gymterview","Практики безопасности Docker: USER, минимальные образы, no secrets in image, сканирование, read-only FS, ограничение ресурсов.",[27,28,29,18,30,31,32,33,34],"Docker безопасность","Docker security","непривилегированный пользователь","Trivy","Docker Scout","read-only filesystem","секреты Docker","собеседование","Ключевые практики: 1) Не запускать от root (USER appuser). 2) Минимальные базовые образы (alpine, distroless). 3) Не хранить секреты в образе (ENV\u002FCOPY .env — антипаттерн). 4) Конкретные теги вместо latest. 5) Сканирование уязвимостей (Trivy, Docker Scout). 6) Read-only файловая система (--read-only). 7) Ограничение ресурсов (--memory, --cpus). 8) --no-install-recommends и удаление в том же слое. 9) .dockerignore и multi-stage build.",true]