🔍 Dockle — линтер для проверки безопасности Docker-образов. Этот инструмент сканирует контейнеры на соответствие best practices и CIS Benchmark, выявляя потенциальные уязвимости. В отличие от Hadolint, Dockle проверяет уже собранные образы, включая структуру файлов, права доступа и наличие уязвимых зависимостей.
Проект поддерживает интеграцию с CI/CD и выводит результаты в JSON или SARIF-формате. Можно игнорировать определенные проверки через
🤖 GitHub
@Docker
Проект поддерживает интеграцию с CI/CD и выводит результаты в JSON или SARIF-формате. Можно игнорировать определенные проверки через
.dockleignore
или гибко настраивать уровни критичности. Для запуска не нужны сложные зависимости — достаточно бинарного файла или Docker-образа.🤖 GitHub
@Docker
❤2👍2
🐳 Что если вам нужно запустить чужой (возможно небезопасный) код?
Представьте: вам прислали бинарник, Python-скрипт или npm-пакет, и его надо выполнить.
Вы не знаете, что внутри — а вдруг там
🔥 Первый инстинкт: запустить в Docker. Кажется, контейнер спасёт?
⚠️ На самом деле — не всегда.
🛑 Docker ≠ песочница
Контейнеры по умолчанию не изолированы от ядра, сетей и сокетов хоста.
Даже простое
🛡 Что делать, если код небезопасен:
Также стоит:
• Настроить AppArmor / SELinux
• Запретить монтирование Docker сокета
• Ограничить доступ к
💡 Вывод:
Docker — это удобный инструмент упаковки, но не синоним безопасной изоляции.
Если запускаете сторонний или user-generated код (плагины, CI-скрипты, sandbox-сервисы) — относитесь к нему как к потенциально опасному.
Безопасность — это не "чеклист", а постоянная практика.
#Docker #Security #Sandbox #DevOps #Isolation
@Docker
Представьте: вам прислали бинарник, Python-скрипт или npm-пакет, и его надо выполнить.
Вы не знаете, что внутри — а вдруг там
rm -rf /
, попытка выйти из контейнера, майнер или установка root-доступа?🔥 Первый инстинкт: запустить в Docker. Кажется, контейнер спасёт?
⚠️ На самом деле — не всегда.
🛑 Docker ≠ песочница
Контейнеры по умолчанию не изолированы от ядра, сетей и сокетов хоста.
Даже простое
docker run -it ubuntu
запускает процесс с root-доступом внутри контейнера.🛡 Что делать, если код небезопасен:
# Запуск без root-доступа
docker run --user 1000:1000 my-image
# Только для чтения
docker run --read-only my-image
# Удалить все cap-привилегии ядра
docker run --cap-drop=ALL my-image
# Использовать seccomp-профиль
docker run --security-opt seccomp=default.json my-image
# Отключить сеть
docker run --network=none my-image
Также стоит:
• Настроить AppArmor / SELinux
• Запретить монтирование Docker сокета
• Ограничить доступ к
/proc
, /sys
💡 Вывод:
Docker — это удобный инструмент упаковки, но не синоним безопасной изоляции.
Если запускаете сторонний или user-generated код (плагины, CI-скрипты, sandbox-сервисы) — относитесь к нему как к потенциально опасному.
Безопасность — это не "чеклист", а постоянная практика.
#Docker #Security #Sandbox #DevOps #Isolation
@Docker
Telegram
Docker простыми словами
Сообщество по докеру.
Рассказываем про docker и его применение в программировании и тестировании.
Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
Рассказываем про docker и его применение в программировании и тестировании.
Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
🔥10👍4
🚀 13 Docker‑трюков с примерами и пояснениями
1\\. Multi\\-stage builds
Минимизирует размер и зависимости контейнера.
2\\. Squash layers
Сжимает слои в один.
3\\. BuildKit secrets
Безопасное использование ключей.
4\\. .dockerignore
Ускоряет сборку.
5\\. HEALTHCHECK
Контейнер сам сообщает, что он еще жив.
6\\. CLI --format
Удобный вывод для скриптов.
7\\. Оптимизация Dockerfile
Стабильные шаги выше — быстрее кеш.
8\\. Лимиты ресурсов
Ограничивает потребление ресурсов.
9\\. docker events
Реагируйте на события демона.
10\\. Read-only
Файловая система только для чтения.
11\\. docker system prune
Удаляет всё ненужное.
12\\. ENTRYPOINT override
Отладка падающих контейнеров.
13\\. Docker contexts
Быстрое переключение между окружениями.
📌 Подробнее
@Docker
1\\. Multi\\-stage builds
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
FROM alpine:3.20
COPY --from=builder /app/myapp /usr/local/bin/
ENTRYPOINT ["myapp"]
Минимизирует размер и зависимости контейнера.
2\\. Squash layers
docker build --squash -t myapp:latest .
Сжимает слои в один.
3\\. BuildKit secrets
RUN --mount=type=secret,id=token git clone [email protected]:corp/private.git
Безопасное использование ключей.
4\\. .dockerignore
node_modules
*.md
Ускоряет сборку.
5\\. HEALTHCHECK
HEALTHCHECK CMD curl -f https://localhost/healthz || exit 1
Контейнер сам сообщает, что он еще жив.
6\\. CLI --format
docker ps --format '{{.Names}}\t{{.Status}}'
Удобный вывод для скриптов.
7\\. Оптимизация Dockerfile
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
Стабильные шаги выше — быстрее кеш.
8\\. Лимиты ресурсов
docker run --cpus=1 --memory=512m app
Ограничивает потребление ресурсов.
9\\. docker events
docker events --filter type=container --filter event=start
Реагируйте на события демона.
10\\. Read-only
docker run --read-only --tmpfs /tmp app
Файловая система только для чтения.
11\\. docker system prune
docker system prune -a --volumes
Удаляет всё ненужное.
12\\. ENTRYPOINT override
docker run --entrypoint /bin/sh -it app
Отладка падающих контейнеров.
13\\. Docker contexts
docker context create prod --docker "host=ssh://user@host"
docker context use prod
Быстрое переключение между окружениями.
📌 Подробнее
@Docker
👍7🔥5❤4
🧹 Очистка данных в Docker: как освободить место и ускорить работу
Docker — мощный инструмент, но со временем он начинает засоряться контейнерами, образами, томами и сетями. Это тормозит систему и забивает диск.
Вот как быстро навести порядок:
▪️ Удалить остановленные контейнеры
▪️ Удалить неиспользуемые образы
▪️ Удалить неиспользуемые сети
▪️ Удалить неиспользуемые тома
▪️ Комплексная очистка всего окружения
⚙️ Автоматизация очистки (раз в неделю через cron)
📦 Для Docker Compose-проектов
✅ Регулярная очистка — залог стабильности и свободного пространства. Привычка, за которую ваша система скажет спасибо.
@Docker
Docker — мощный инструмент, но со временем он начинает засоряться контейнерами, образами, томами и сетями. Это тормозит систему и забивает диск.
Вот как быстро навести порядок:
▪️ Удалить остановленные контейнеры
docker container prune
▪️ Удалить неиспользуемые образы
docker image prune
docker image prune -a
▪️ Удалить неиспользуемые сети
docker network prune
▪️ Удалить неиспользуемые тома
docker volume prune
▪️ Комплексная очистка всего окружения
docker system prune
docker system prune -a
⚙️ Автоматизация очистки (раз в неделю через cron)
0 * * 0 /usr/bin/docker system prune -f
📦 Для Docker Compose-проектов
docker-compose down --remove-orphans
✅ Регулярная очистка — залог стабильности и свободного пространства. Привычка, за которую ваша система скажет спасибо.
@Docker
❤11
Запустить Docker не сложно, если знаешь docker run. Только потом оказывается, что образ весит гигабайт, собирается вечность и в нем десяток уязвимостей.
Чтобы сократить разрыв между «базой» и способностью мыслить, как сильный инженер, Слёрм сделал 4-недельный «Docker-практикум».
Что внутри:
✨7 нетиповых задач: от оптимизации Go-сервиса до работы с «кровавым энтерпрайзом» на Java.
✨Код-ревью, которого нам всем так не хватает, от инженера, с комментариями: «Тут ты неправильно сложил слои, из-за этого образ на 200МБ больше. А тут — скопировал в образ лишнее, создав вектор атаки».
✨Встречи с экспертами с разбором задач и эталлонным решением и мыслью: «А что так можно было?»
Никакой теории, только практика - всё как в жизни.
В итоге:
➕Ваши Docker-образы устойчивы и готовы к продакшену
➕Вы больше не гуглите базовые вещи, потому что понимаете нюансы
Это не курс, а симулятор работы в сильной инженерной команде, где от вас ждут результаты.
Цена: от 10 900 рублей
⏩ Узнать подробности и записаться по ссылке
Чтобы сократить разрыв между «базой» и способностью мыслить, как сильный инженер, Слёрм сделал 4-недельный «Docker-практикум».
Что внутри:
✨7 нетиповых задач: от оптимизации Go-сервиса до работы с «кровавым энтерпрайзом» на Java.
✨Код-ревью, которого нам всем так не хватает, от инженера, с комментариями: «Тут ты неправильно сложил слои, из-за этого образ на 200МБ больше. А тут — скопировал в образ лишнее, создав вектор атаки».
✨Встречи с экспертами с разбором задач и эталлонным решением и мыслью: «А что так можно было?»
Никакой теории, только практика - всё как в жизни.
В итоге:
➕Ваши Docker-образы устойчивы и готовы к продакшену
➕Вы больше не гуглите базовые вещи, потому что понимаете нюансы
Это не курс, а симулятор работы в сильной инженерной команде, где от вас ждут результаты.
Цена: от 10 900 рублей
⏩ Узнать подробности и записаться по ссылке
💩4❤1
🐳 Шпаргалка по командам Docker
Некоторые из полезных флагов:
-a / --all — список всех контейнеров (по умолчанию показывает только запущенные);
-q / --quiet — перечислить только id контейнеров (полезно, когда вам нужны все контейнеры).
Можно комбинировать эти команды. Например, для очистки всех контейнеров и образов:
🔗 Сохраняй, чтобы не потерять!
#docker #cheatsheet #doc
docker exec -it test1 bash
— Войти в контейнер контейнер test1.docker container start test1
— Запустить контейнер test1docker ps
— показывает список запущенных контейнеров. Некоторые из полезных флагов:
-a / --all — список всех контейнеров (по умолчанию показывает только запущенные);
-q / --quiet — перечислить только id контейнеров (полезно, когда вам нужны все контейнеры).
docker pull
— большинство образов создаётся на основе базового образа из Docker Hub. Docker Hub содержит множество готовых образов, которые можно использовать вместо того, чтобы создавать и настраивать свой собственный. Чтобы скачать определённый образ или набор образов (репозиторий), используйте команду docker pull.docker build
— эта команда собирает образ Docker из Dockerfile и «контекста». Контекст сборки — это набор файлов, расположенных по определённому пути или URL. Используйте флаг -t, чтобы задать имя образа. Например, команда docker build -t my_container . соберёт образ, используя текущую директорию, на что указывает точка в конце.docker run
— запускает контейнер, на основе указанного образа. Эту команду можно дополнять другими, например, docker run my_image -it bash запустит контейнер, а затем запустит в нём bash.docker logs
— эта команда используется для просмотра логов указанного контейнера. Можно использовать флаг --follow, чтобы следить за логами работающей программы: docker logs --follow my_container.docker volume ls
— показывает список томов, которые являются предпочитаемым механизмом для сохранения данных, генерируемых и используемых контейнерами Docker.docker rm
— удаляет один и более контейнеров, например, docker rm my_container.docker rmi
— удаляет один и более образов, например, docker rmi my_image.docker stop
— останавливает один и более контейнеров. Команда docker stop my_container остановит один контейнер, а docker stop $(docker ps -a -q) — все запущенные. Более грубый способ — использовать docker kill my_container, который не пытается сначала аккуратно завершить процесс.docker kill
— принудительно убить контейнер.Можно комбинировать эти команды. Например, для очистки всех контейнеров и образов:
docker kill $(docker ps -q)
— Останавливаем все запущенные контейнеры .docker rm $(docker ps -a -q)
— Удаляем все остановленные контейнеры.docker rmi $(docker images -q)
— Удаляем все образы.🔗 Сохраняй, чтобы не потерять!
#docker #cheatsheet #doc
❤6👍3
🐳 Docker совет, который знают не все: кэширование между билдами с
Вместо того чтобы каждый раз переустанавливать зависимости, можно кэшировать директории прямо в
📦 Пример — ускоряем установку Python-зависимостей:
🔍 Что даёт:
- сохраняет кэш пакетов между сборками
- ускоряет билд в 2–5 раз
- уменьшает загрузку сети и слои образа
⚙️ Работает только при включённом Docker BuildKit (DOCKER_BUILDKIT=1)
📌 Маленький флаг — большой прирост скорости.
--mount=type=cache
Вместо того чтобы каждый раз переустанавливать зависимости, можно кэшировать директории прямо в
Dockerfile
— особенно удобно для pip, npm, apt и т.д.📦 Пример — ускоряем установку Python-зависимостей:
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r requirements.txt
🔍 Что даёт:
- сохраняет кэш пакетов между сборками
- ускоряет билд в 2–5 раз
- уменьшает загрузку сети и слои образа
⚙️ Работает только при включённом Docker BuildKit (DOCKER_BUILDKIT=1)
📌 Маленький флаг — большой прирост скорости.
❤2👍1🔥1
Прокачай свои пайплайны с GitLab CI — секреты для DevOps и разработчиков.
Хотите, чтобы ваши пайплайны в GitLab CI были не только надёжными, но и эффективными? Тогда этот вебинар — для вас!
Мы покажем, как избежать ошибок, ускорить релизы и сделать процесс работы с GitLab CI простым и предсказуемым.
Ошибки, которые вы научитесь избегать:
📲чрезмерная ручная настройка: мы покажем, как сделать пайплайн автономным и стабильным
📲сложные и нечитаемые пайплайны: узнаете, как разделить логику пайплайна для лучшей поддержки и управления
📲непонимание влияния CI/CD на бизнес: мы объясним, как правильный пайплайн ускоряет процесс разработки и способствует росту бизнеса
📅 Дата: 30 июля, 19:00 (МСК) - бесплатно
👉 Записаться на вебинар — https://tglink.io/d60499222d59
Не упустите шанс сделать процесс разработки более предсказуемым и эффективным
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFGVsvxg
Хотите, чтобы ваши пайплайны в GitLab CI были не только надёжными, но и эффективными? Тогда этот вебинар — для вас!
Мы покажем, как избежать ошибок, ускорить релизы и сделать процесс работы с GitLab CI простым и предсказуемым.
Ошибки, которые вы научитесь избегать:
📲чрезмерная ручная настройка: мы покажем, как сделать пайплайн автономным и стабильным
📲сложные и нечитаемые пайплайны: узнаете, как разделить логику пайплайна для лучшей поддержки и управления
📲непонимание влияния CI/CD на бизнес: мы объясним, как правильный пайплайн ускоряет процесс разработки и способствует росту бизнеса
📅 Дата: 30 июля, 19:00 (МСК) - бесплатно
👉 Записаться на вебинар — https://tglink.io/d60499222d59
Не упустите шанс сделать процесс разработки более предсказуемым и эффективным
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFGVsvxg
❤1💩1
Открытые мастера в Kubernetes — потенциальный инцидент в продакшене.
В новой статье на Хабр разработчики сервиса
Managed Kubernetes из
MWS Cloud Platform⬜️ рассказывают:
⏺️ какие уязвимости с радостью используют хакеры при открытых control plane-нодах в твоём кластере;
⏺️ какие требования к hosted control plane-решению предъявляет публичный облачный провайдер, предоставляющий k8s as-a-service;
⏺️ о плюсах и минусах популярных open source-решений.
➡️ Читать статью
В новой статье на Хабр разработчики сервиса
Managed Kubernetes из
MWS Cloud Platform
Please open Telegram to view this post
VIEW IN TELEGRAM
Визуализация процесса работы с Docker 👇
Давайте разберем основные термины с помощью аналогии:
🔹 Dockerfile
— Представьте Dockerfile как рецепт или набор инструкций.
Вы начинаете с создания Dockerfile, который перечисляет все «ингредиенты» (программное обеспечение и конфигурации), необходимые для работы вашего приложения.
🔹 Docker Image
— Используя Dockerfile как рецепт, вы «готовите» или «собираете» Docker Image.
Этот образ — как замороженный снимок вашего приложения, содержащий все, что нужно для его запуска.
🔹 Docker Container
— После создания Docker Image вы можете «подать его на стол», создав Docker Container.
Контейнер — это как реальный работающий экземпляр вашего приложения. Его можно запускать, останавливать и даже клонировать по мере необходимости.
Вы можете запустить любое количество контейнеров на основе одного образа.
Наш Docker чатик 🐬
Давайте разберем основные термины с помощью аналогии:
— Представьте Dockerfile как рецепт или набор инструкций.
Вы начинаете с создания Dockerfile, который перечисляет все «ингредиенты» (программное обеспечение и конфигурации), необходимые для работы вашего приложения.
— Используя Dockerfile как рецепт, вы «готовите» или «собираете» Docker Image.
Этот образ — как замороженный снимок вашего приложения, содержащий все, что нужно для его запуска.
— После создания Docker Image вы можете «подать его на стол», создав Docker Container.
Контейнер — это как реальный работающий экземпляр вашего приложения. Его можно запускать, останавливать и даже клонировать по мере необходимости.
Вы можете запустить любое количество контейнеров на основе одного образа.
Наш Docker чатик 🐬
Please open Telegram to view this post
VIEW IN TELEGRAM
👎3❤1
«Штурвал 2.11»: упрощенная установка, новые логи и дашборды
Ребята из «Лаборатории Числитель» выкатили новый релиз «Штурвала» — платформы управления кластерами Kubernetes — и зовут на обзор, чтобы показать все самое важное:
▪️Новый графический инсталлятор с поддержкой Cluster API, что позволяет легко разворачивать кластеры управления даже джунам;
▪️Замена OpenSearch на интегрированное в платформу решение VictoriaLogs;
▪️Обновленный дашборд неймспейса: больше информации, меньше путаницы;
▪️Новый дашборд доступности компонентов для упрощения мониторинга состояния кластеров;
▪️Новый Cluster API провайдер к VMware vCloud Director.
Когда: 12 августа, 11:00 мск
Регистрируйтесь и готовьте свои вопросы!
Ребята из «Лаборатории Числитель» выкатили новый релиз «Штурвала» — платформы управления кластерами Kubernetes — и зовут на обзор, чтобы показать все самое важное:
▪️Новый графический инсталлятор с поддержкой Cluster API, что позволяет легко разворачивать кластеры управления даже джунам;
▪️Замена OpenSearch на интегрированное в платформу решение VictoriaLogs;
▪️Обновленный дашборд неймспейса: больше информации, меньше путаницы;
▪️Новый дашборд доступности компонентов для упрощения мониторинга состояния кластеров;
▪️Новый Cluster API провайдер к VMware vCloud Director.
Когда: 12 августа, 11:00 мск
Регистрируйтесь и готовьте свои вопросы!
Вопрос на собеседовании.
Каково назначение docker_host?
Он задает URL или путь к сокету unix, используемые для соединения с API Docker. Значение по умолчанию:
Для подключения к удаленному серверу обычно используется TCP, например:
#собеседование
Каково назначение docker_host?
unix://var/run/docker.sock
Для подключения к удаленному серверу обычно используется TCP, например:
tcp://192.0.1.20:3230
#собеседование
❤4
☕️ Cup — минималистичный инструмент для отслеживания обновлений контейнеров. Этот легковесный проект (всего 5.4 МБ!) сканирует образы в различных реестрах — от Docker Hub до Gitea и показывает доступные обновления без риска нарваться на лимиты API.
Что особенно удобно — Cup работает даже на Raspberry Pi и предлагает как CLI, так и веб-интерфейс с JSON-выводом для интеграций. Правда, в отличие от аналогов, он не умеет автоматически запускать пайплайны — зато идеально подходит для тех, кто предпочитает простые и прозрачные инструменты.
🤖 GitHub
Что особенно удобно — Cup работает даже на Raspberry Pi и предлагает как CLI, так и веб-интерфейс с JSON-выводом для интеграций. Правда, в отличие от аналогов, он не умеет автоматически запускать пайплайны — зато идеально подходит для тех, кто предпочитает простые и прозрачные инструменты.
🤖 GitHub
❤3