🐳 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
Визуализация процесса работы с 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👎3
Вопрос на собеседовании.
Каково назначение docker_host?
Он задает URL или путь к сокету unix, используемые для соединения с API Docker. Значение по умолчанию:
Для подключения к удаленному серверу обычно используется TCP, например:
#собеседование
Каково назначение docker_host?
unix://var/run/docker.sock
Для подключения к удаленному серверу обычно используется TCP, например:
tcp://192.0.1.20:3230
#собеседование
❤5
☕️ Cup — минималистичный инструмент для отслеживания обновлений контейнеров. Этот легковесный проект (всего 5.4 МБ!) сканирует образы в различных реестрах — от Docker Hub до Gitea и показывает доступные обновления без риска нарваться на лимиты API.
Что особенно удобно — Cup работает даже на Raspberry Pi и предлагает как CLI, так и веб-интерфейс с JSON-выводом для интеграций. Правда, в отличие от аналогов, он не умеет автоматически запускать пайплайны — зато идеально подходит для тех, кто предпочитает простые и прозрачные инструменты.
🤖 GitHub
Что особенно удобно — Cup работает даже на Raspberry Pi и предлагает как CLI, так и веб-интерфейс с JSON-выводом для интеграций. Правда, в отличие от аналогов, он не умеет автоматически запускать пайплайны — зато идеально подходит для тех, кто предпочитает простые и прозрачные инструменты.
🤖 GitHub
❤5👏1
🚢 Unregistry — прямой деплой Docker-образов без регистрации. Инструмент предлагает альтернативу традиционным Docker-регистрам, позволяя развертывать образы напрямую между хостами через SSH. Он анализирует слои образов и передает только измененные компоненты, что особенно полезно при частых обновлениях больших ML-моделей или приложений.
Решение не требует настройки дополнительной инфраструктуры и использует существующие SSH-ключи. Unregistry интегрируется в CI/CD-процессы и подходит для продакшен-развертываний, где важны скорость и экономия ресурсов.
🤖 GitHub
Решение не требует настройки дополнительной инфраструктуры и использует существующие SSH-ключи. Unregistry интегрируется в CI/CD-процессы и подходит для продакшен-развертываний, где важны скорость и экономия ресурсов.
🤖 GitHub
🔥6
Назовите продвинутые команды Docker
Наиболее важные из них:
docker -version: узнать установленную версию Docker;
docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них;
docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них;
docker exec: войти в контейнер и выполнить в нем команду;
docker build: собрать образ из Dockerfile;
docker rm: удалить контейнер с указанным идентификатором;
docker rmi: удалить образ с указанным идентификатором;
docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.;
docker cp: сохранить файл из контейнера в локальную систему;
docker history: показать историю образа с указанным именем.
Наш Docker чатик 🐬
Наиболее важные из них:
docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них;
docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них;
docker exec: войти в контейнер и выполнить в нем команду;
docker build: собрать образ из Dockerfile;
docker rm: удалить контейнер с указанным идентификатором;
docker rmi: удалить образ с указанным идентификатором;
docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.;
docker cp: сохранить файл из контейнера в локальную систему;
docker history: показать историю образа с указанным именем.
Наш Docker чатик 🐬
Telegram
Docker чат. Чат по докеру
You’ve been invited to join this group on Telegram.
👍4🤔3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 18 самых частых HTTP-статусов, которые должен знать каждый QA и Dev 🚀
👍 Друзья, представляю вашему вниманию GIF-шпаргалку с основными HTTP-статусами, которая поможет быстро разобраться в ответах сервера! 📊
🔹 2xx: Успешные
200 OK — запрос успешно выполнен.
201 Created — ресурс успешно создан.
202 Accepted — запрос принят, но еще не обработан.
🔹 3xx: Перенаправления
301 Moved Permanently — ресурс перемещен навсегда.
302 Found — ресурс временно перемещен.
304 Not Modified — ресурс не изменялся (используйте кеш).
🔹 4xx: Ошибки клиента
400 Bad Request — некорректный запрос.
401 Unauthorized — требуется авторизация.
403 Forbidden — доступ запрещен.
404 Not Found — ресурс не найден.
405 Method Not Allowed — метод не поддерживается.
408 Request Timeout — время запроса истекло.
🔹 5xx: Ошибки сервера
500 Internal Server Error — внутренняя ошибка сервера.
501 Not Implemented — метод не реализован.
502 Bad Gateway — ошибка шлюза.
503 Service Unavailable — сервис недоступен.
504 Gateway Timeout — время ожидания шлюза истекло.
💾 Сохраняйте себе, чтобы всегда быть во всеоружии! 💪
Источник
👍 Друзья, представляю вашему вниманию GIF-шпаргалку с основными HTTP-статусами, которая поможет быстро разобраться в ответах сервера! 📊
🔹 2xx: Успешные
200 OK — запрос успешно выполнен.
201 Created — ресурс успешно создан.
202 Accepted — запрос принят, но еще не обработан.
🔹 3xx: Перенаправления
301 Moved Permanently — ресурс перемещен навсегда.
302 Found — ресурс временно перемещен.
304 Not Modified — ресурс не изменялся (используйте кеш).
🔹 4xx: Ошибки клиента
400 Bad Request — некорректный запрос.
401 Unauthorized — требуется авторизация.
403 Forbidden — доступ запрещен.
404 Not Found — ресурс не найден.
405 Method Not Allowed — метод не поддерживается.
408 Request Timeout — время запроса истекло.
🔹 5xx: Ошибки сервера
500 Internal Server Error — внутренняя ошибка сервера.
501 Not Implemented — метод не реализован.
502 Bad Gateway — ошибка шлюза.
503 Service Unavailable — сервис недоступен.
504 Gateway Timeout — время ожидания шлюза истекло.
💾 Сохраняйте себе, чтобы всегда быть во всеоружии! 💪
Источник
❤7🔥4⚡1👎1
Продвинутые команды Docker 💡
Ниже — рабочие one-liners и флаги, которые экономят время, трафик и нервы в проде.
🧱 Build/кэш/секреты
1) Включить BuildKit + передать секреты без попадания в слой:
DOCKER_BUILDKIT=1 docker build \
--secret id=GH_TOKEN,src=./token.txt \
--progress=plain -t app:dev .
2) Тянуть/пушить кэш из реестра (CI ускоряется в разы):
docker buildx build \
--cache-from=type=registry,ref=registry.local/app:cache \
--cache-to=type=registry,ref=registry.local/app:cache,mode=max \
-t registry.local/app:latest .
3) Multi-arch за один прогон:
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/org/app:1.0 --push .
🗂 Образы/тома/копирование
4) Архивировать том (бэкап артефактов/БД):
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -czf /b/data.tgz .'
Импорт обратно:
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -xzf /b/data.tgz'
5) Вытащить файл из контейнера без ssh:
docker cp myctr:/var/log/app.log ./app.log
⚙️ Ресурсы/лимиты/наблюдение
6) Жёстко ограничить CPU, RAM и swap:
docker run --cpus=1.5 -m 2g --memory-swap=3g myimg
7) Быстрые метрики без лишнего шума:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
🕵️ Логи/диагностика/сеть
😍 Логи за конкретный интервал с таймстампами:
docker logs --since 10m --until 2m --timestamps myctr | grep -i error
9) Netshoot внутри сети контейнера (DNS/HTTP/TLS-диагностика):
docker run --rm --network container:myctr nicolaka/netshoot curl -sI http://localhost:8080
🔖 Лейблы/уборка/инспект
10) Метить временные ресурсы и чистить их безопасно:
docker ps -aq -f "label=tmp=true" | xargs -r docker rm -f
docker images -q -f "label=tmp=true" | xargs -r docker rmi
11) Посмотреть реальный ENTRYPOINT/CMD образа:
docker inspect -f '{{json .Config.Entrypoint}} {{json .Config.Cmd}}' myimg
12) Prune с фильтрами (не трогаем ресурсы с label=keep):
docker system prune -a --volumes \
--filter "label!=keep" --filter "until=168h"
🧩 Compose (бонус)
13) Запуск только нужных профилей:
COMPOSE_PROFILES=api,worker docker compose up -d
14) Проброс build-аргументов и секретов в Compose:
DOCKER_BUILDKIT=1 docker compose build \
--build-arg GIT_SHA=$(git rev-parse --short HEAD) \
--secret id=NPM_TOKEN,src=.npm_token
Используйте лейблы и профили как основу политики «создал — пометь — убери». Это дисциплина, которая спасает прод.
Ниже — рабочие one-liners и флаги, которые экономят время, трафик и нервы в проде.
🧱 Build/кэш/секреты
1) Включить BuildKit + передать секреты без попадания в слой:
DOCKER_BUILDKIT=1 docker build \
--secret id=GH_TOKEN,src=./token.txt \
--progress=plain -t app:dev .
2) Тянуть/пушить кэш из реестра (CI ускоряется в разы):
docker buildx build \
--cache-from=type=registry,ref=registry.local/app:cache \
--cache-to=type=registry,ref=registry.local/app:cache,mode=max \
-t registry.local/app:latest .
3) Multi-arch за один прогон:
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/org/app:1.0 --push .
🗂 Образы/тома/копирование
4) Архивировать том (бэкап артефактов/БД):
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -czf /b/data.tgz .'
Импорт обратно:
docker run --rm -v data:/v -v "$PWD":/b busybox \
sh -c 'cd /v && tar -xzf /b/data.tgz'
5) Вытащить файл из контейнера без ssh:
docker cp myctr:/var/log/app.log ./app.log
⚙️ Ресурсы/лимиты/наблюдение
6) Жёстко ограничить CPU, RAM и swap:
docker run --cpus=1.5 -m 2g --memory-swap=3g myimg
7) Быстрые метрики без лишнего шума:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
🕵️ Логи/диагностика/сеть
😍 Логи за конкретный интервал с таймстампами:
docker logs --since 10m --until 2m --timestamps myctr | grep -i error
9) Netshoot внутри сети контейнера (DNS/HTTP/TLS-диагностика):
docker run --rm --network container:myctr nicolaka/netshoot curl -sI http://localhost:8080
🔖 Лейблы/уборка/инспект
10) Метить временные ресурсы и чистить их безопасно:
docker ps -aq -f "label=tmp=true" | xargs -r docker rm -f
docker images -q -f "label=tmp=true" | xargs -r docker rmi
11) Посмотреть реальный ENTRYPOINT/CMD образа:
docker inspect -f '{{json .Config.Entrypoint}} {{json .Config.Cmd}}' myimg
12) Prune с фильтрами (не трогаем ресурсы с label=keep):
docker system prune -a --volumes \
--filter "label!=keep" --filter "until=168h"
🧩 Compose (бонус)
13) Запуск только нужных профилей:
COMPOSE_PROFILES=api,worker docker compose up -d
14) Проброс build-аргументов и секретов в Compose:
DOCKER_BUILDKIT=1 docker compose build \
--build-arg GIT_SHA=$(git rev-parse --short HEAD) \
--secret id=NPM_TOKEN,src=.npm_token
Используйте лейблы и профили как основу политики «создал — пометь — убери». Это дисциплина, которая спасает прод.
❤6🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает Docker?
Архитектура Docker состоит из трех основных компонентов:
🔹 Docker-клиент
🔹 Docker Host
🔹Docker Registry
Архитектура Docker состоит из трех основных компонентов:
🔹 Docker-клиент
🔹 Docker Host
🔹Docker Registry
👍8❤2👌2
Docker for Developers
Автор: Richard Bullington-McGuire
Год издания: 2020
#docker #en #книга
Скачать книгу
Автор: Richard Bullington-McGuire
Год издания: 2020
#docker #en #книга
Скачать книгу
🤔1
В чем разница между docker stop и docker pause?
В том, что они разные сигналы посылают
🔹 docker pause — использует SIGSTOP(19), что приостанавливает процессы в контейнере
🔹 docker stop — применяет sigterm и sigkill к главному процессу контейнера
Наш Docker чатик 🐬
🔹 docker pause — использует SIGSTOP(19), что приостанавливает процессы в контейнере
🔹 docker stop — применяет sigterm и sigkill к главному процессу контейнера
Наш Docker чатик 🐬
Telegram
Docker чат. Чат по докеру
You’ve been invited to join this group on Telegram.
❤3
☁️☁️ Почему облако идеально для CI/CD?
✅Масштабируемость
Облачные платформы предоставляют ресурсы по запросу, позволяя обрабатывать высокие нагрузки в моменты пиковой активности (например, при запуске массового тестирования).
Услуги, такие как AWS Elastic Compute Cloud (EC2) или Google Cloud Run, автоматически подстраиваются под нужды вашего конвейера.
✅ Готовая инфраструктура.
В облаке не нужно настраивать физические сервера или управлять сложной инфраструктурой. Это упрощает развёртывание CI/CD систем и снижает затраты на их обслуживание.
Используйте преднастроенные инструменты, например Azure Pipelines или AWS CodeBuild, которые уже интегрированы с популярными платформами разработки.
✅ Гибкость развёртывания
Облако поддерживает множество моделей развёртывания:
⚙️ Public Cloud: Удобно для тестирования и небольших проектов.
⚙️ Private Cloud: Идеально для обеспечения безопасности корпоративных данных.
⚙️ Hybrid Cloud: Подходит для проектов с частично локальной инфраструктурой.
✅ Глобальная доступность
Облачные решения предоставляют доступ к серверам по всему миру, что ускоряет развёртывание обновлений для глобальных пользователей.
⚙️☁️ Советы для успешного CI/CD в облаке
✅ Используйте облачные API:
Интеграция с API облачных провайдеров ускоряет автоматизацию задач.
Пример: Сборка Docker-образов и их публикация в облачном репозитории.
✅ Выберите правильный регион:
Размещайте инфраструктуру в облачных регионах, ближайших к вашим пользователям, чтобы минимизировать задержки.
✅ Автоматическое тестирование безопасности:
Интегрируйте сканеры безопасности в конвейер CI/CD (например, Snyk, Checkmarx).
✅Мониторинг и логирование:
Включите такие инструменты, как AWS CloudWatch, Azure Monitor, Google Operations Suite, для анализа производительности CI/CD конвейеров.
✅Масштабируемость
Облачные платформы предоставляют ресурсы по запросу, позволяя обрабатывать высокие нагрузки в моменты пиковой активности (например, при запуске массового тестирования).
Услуги, такие как AWS Elastic Compute Cloud (EC2) или Google Cloud Run, автоматически подстраиваются под нужды вашего конвейера.
✅ Готовая инфраструктура.
В облаке не нужно настраивать физические сервера или управлять сложной инфраструктурой. Это упрощает развёртывание CI/CD систем и снижает затраты на их обслуживание.
Используйте преднастроенные инструменты, например Azure Pipelines или AWS CodeBuild, которые уже интегрированы с популярными платформами разработки.
✅ Гибкость развёртывания
Облако поддерживает множество моделей развёртывания:
⚙️ Public Cloud: Удобно для тестирования и небольших проектов.
⚙️ Private Cloud: Идеально для обеспечения безопасности корпоративных данных.
⚙️ Hybrid Cloud: Подходит для проектов с частично локальной инфраструктурой.
✅ Глобальная доступность
Облачные решения предоставляют доступ к серверам по всему миру, что ускоряет развёртывание обновлений для глобальных пользователей.
⚙️☁️ Советы для успешного CI/CD в облаке
✅ Используйте облачные API:
Интеграция с API облачных провайдеров ускоряет автоматизацию задач.
Пример: Сборка Docker-образов и их публикация в облачном репозитории.
✅ Выберите правильный регион:
Размещайте инфраструктуру в облачных регионах, ближайших к вашим пользователям, чтобы минимизировать задержки.
✅ Автоматическое тестирование безопасности:
Интегрируйте сканеры безопасности в конвейер CI/CD (например, Snyk, Checkmarx).
✅Мониторинг и логирование:
Включите такие инструменты, как AWS CloudWatch, Azure Monitor, Google Operations Suite, для анализа производительности CI/CD конвейеров.
👎1
Итоги State of DevOps Russia 2025
На вебинаре 31 октября «Экспресс 42» представит результаты «Исследования состояния DevOps в России 2025» — анализа индустрии, основанного на опросе более 4000 специалистов. Ежегодно «Экспресс 42» вместе с партнёрами выявляет технологические тренды и оценивает их влияние на эффективность разработки.
В этом году эксперты исследовали Developer Experience, информационную безопасность, ИИ- и DevOps-инструменты, Kubernetes, внутренние платформы для разработки.
Вы узнаете:
* какие инструменты сейчас популярны;
* какие характеристики Developer Experience отличают высокоэффективные команды;
* для каких задач используют ИИ-инструменты;
* как внедряют ИБ в процесс разработки;
* какие цели развития у внутренних платформ для разработки;
* какие изменения произошли на рынке труда за год.
Ждём вас на вебинаре!
Онлайн | 31 октября в 12:00
Зарегистрироваться
На вебинаре 31 октября «Экспресс 42» представит результаты «Исследования состояния DevOps в России 2025» — анализа индустрии, основанного на опросе более 4000 специалистов. Ежегодно «Экспресс 42» вместе с партнёрами выявляет технологические тренды и оценивает их влияние на эффективность разработки.
В этом году эксперты исследовали Developer Experience, информационную безопасность, ИИ- и DevOps-инструменты, Kubernetes, внутренние платформы для разработки.
Вы узнаете:
* какие инструменты сейчас популярны;
* какие характеристики Developer Experience отличают высокоэффективные команды;
* для каких задач используют ИИ-инструменты;
* как внедряют ИБ в процесс разработки;
* какие цели развития у внутренних платформ для разработки;
* какие изменения произошли на рынке труда за год.
Ждём вас на вебинаре!
Онлайн | 31 октября в 12:00
Зарегистрироваться
💩2❤1