Docker простыми словами
6.32K subscribers
227 photos
26 videos
3 files
122 links
Сообщество по докеру.

Рассказываем про docker и его применение в программировании и тестировании.

Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
Download Telegram
🧹 Очистка данных в 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 exec -it test1 bash — Войти в контейнер контейнер test1.
docker container start test1 — Запустить контейнер test1
docker 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
7👍3
🐳 Docker совет, который знают не все: кэширование между билдами с --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 Cookbook

Автор: Sébastien Goasguen
Год издания: 2015

#docker #en #книга

Скачать книгу
2👌1
Docker_big_cheatsheet.pdf
2.6 MB
🐳 Большая шпаргалка по Docker

#cheatsheet #docker
5
Визуализация процесса работы с Docker 👇

Давайте разберем основные термины с помощью аналогии:

🔹Dockerfile
— Представьте Dockerfile как рецепт или набор инструкций.

Вы начинаете с создания Dockerfile, который перечисляет все «ингредиенты» (программное обеспечение и конфигурации), необходимые для работы вашего приложения.

🔹Docker Image
— Используя Dockerfile как рецепт, вы «готовите» или «собираете» Docker Image.

Этот образ — как замороженный снимок вашего приложения, содержащий все, что нужно для его запуска.

🔹Docker Container
— После создания Docker Image вы можете «подать его на стол», создав Docker Container.

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

Вы можете запустить любое количество контейнеров на основе одного образа.

Наш Docker чатик 🐬
Please open Telegram to view this post
VIEW IN TELEGRAM
👎31
Вопрос на собеседовании.

Каково назначение docker_host?

Он задает URL или путь к сокету unix, используемые для соединения с API Docker. Значение по умолчанию:

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
5
🚢 Unregistry — прямой деплой Docker-образов без регистрации. Инструмент предлагает альтернативу традиционным Docker-регистрам, позволяя развертывать образы напрямую между хостами через SSH. Он анализирует слои образов и передает только измененные компоненты, что особенно полезно при частых обновлениях больших ML-моделей или приложений.

Решение не требует настройки дополнительной инфраструктуры и использует существующие 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 чатик 🐬
👍4🤔31
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 — время ожидания шлюза истекло.

💾 Сохраняйте себе, чтобы всегда быть во всеоружии! 💪

Источник
6🔥41👎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 https://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👍2🔥2
💎Приглашаем вас на курс Data Engineer💎
Получите актуальные навыки от преподавателей-практиков на реальном проекте.

Что вы узнаете на курсе?

▪️Разворачивать, настраивать и оптимизировать инструменты обработки данных:
- Разрабатывать и оптимизировать пайплайны обработки данных
- Использовать Apache Airflow для оркестрации задач
- Обрабатывать большие данные с помощью Apache Spark

▪️Работать с базами данных и хранилищами данных:
- Строить ETL/ELT-процессы для загрузки и обработки данных
- Работать с распределёнными хранилищами (HDFS, S3) и DWH (ClickHouse)

▪️Адаптировать датасеты для дальнейшей работы и аналитики
▪️Создадите сервисы, которые используют результаты обработки больших объемов данных
▪️Применять облачные технологии
▪️Решать реальные бизнес-задачи: cтроить отчётность и дашборды, обеспечивать Data Governance
▪️Научитесь использовать на реальном проекте актуальные технологии и инструменты 2025 года для дата инженера.

Чего не будет на курсе?

- Утомительных монологов — вы сможете вживую задавать свои вопросы преподавателю.
- Непосильной нагрузки и долгих изнуряющих часов занятий — курс продуман для вашего комфортного обучения.
- Неактуальной информации — курс переработан и актуален на 2025 год, убедитесь в программе курса на сайте.
- "Учёба ради учёбы" — курс разработан при поддержке крупных компаний, которые заинтересованы в новых дата инженерах!

Записывайтесь на бесплатный вебинар 23 сентября в 18:00 мск.
🎁 Участники вебинара смогут активировать скидку 5% на курс Data Engineer по промо-коду DE_9 до 10.10.2025г.

📚На вебинаре:

• Разберём один из принципов развертывания Spark кластера в облачных провайдерах.
• Покажем Terraform конфигурации для автоматизированного развертывания кластера.
• Продемонстрируем подключение к кластеру для работы из IDE.

Оставьте заявку на сайте и наш менеджер свяжется с вами.
➡️ OTUS.RU

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1💩1
Удаление томов в Docker🐬
👍91👌1
Без конфигов и консоли: Kubernetes-платформа за 20 минут

Главная проблема при переходе на Kubernetes — сложная установка и настройка. Недели изучения документации, настройка десятков компонентов, отладка конфигов. В итоге многие так и не начинают.

Эксперты Deckhouse решили эту проблему радикально и создали графический установщик, который ставит Deckhouse Kubernetes Platform (DKP) в несколько кликов.

25 сентября пройдёт вебинар, где вы узнаете:
• Как за 10 минут развернуть Kubernetes-платформу и ещё за 10 — получить виртуализацию.
Какие проблемы установки закрывает графический интерфейс.
• Что ещё умеет веб-интерфейс Deckhouse Installer и планы развития установщика. 

С установщиком и DKP вы cможете сразу сосредоточиться на своих задачах, а не на том, как развернуть платформу. Никаких консольных команд и чтения документации — всё интуитивно понятно. Предлагаем убедиться в этом самостоятельно.

Онлайн live-демо 25 сентября в 12:00. 
Зарегистрироваться → https://tglink.io/8c5e2c26ddd1?erid=2W5zFGKpB8k
2
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает Docker?

Архитектура Docker состоит из трех основных компонентов:

🔹 Docker-клиент

🔹 Docker Host

🔹Docker Registry
👍52👌2