В чем разница между 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.
Forwarded from DevOps // Human Help
#docker #10cards
Это оригинальный контент
Делал долго, старался
Поэтому:
Если понравился пост и считаешь, что работа проделана не зря — поставь реакцию
Пост показался полезным — добавь его в избранное
NEW
Под этим постом разыгрывается подписка Telegram Premium на три месяца. Чтобы принять участие оставь комментарий, начинающийся со слова «docker», в течение 24 часов после публикации. Напиши что-нибудь по теме поста: расскажи, когда впервые столкнулся с технологией, или какие вопросы о Docker попадались тебе на собеседовании
Подписки будут разыгрываться и далее, так что не отключай уведомления (ну или включи его) — обещаю, зря беспокоить не буду
Подписывайся на канал DevOps // Human Help
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Откройте для себя Infrastructure as Code с Terraform
❓Задумывались, как упростить управление инфраструктурой и сделать её более прозрачной и управляемой? Узнайте, как сделать это с помощью Terraform на открытом вебинаре.
Мы расскажем, как концепция Infrastructure as Code помогает автоматизировать и контролировать процессы, избавляя вас от необходимости вручную управлять виртуальными машинами через интерфейс облачных провайдеров. Один раз описав желаемое состояние инфраструктуры, вы сможете подключать любые облачные провайдеры, когда это будет нужно.
Преимущества очевидны: автоматизация, контроль версий и возможность откатиться к предыдущим состояниям. Понимание этих инструментов — шаг к эффективному управлению вашей инфраструктурой.
🎁Зарегистрируйтесь на вебинар и получите в подарок запись полезного эфира "Ansible: быстрый старт". Это отличная возможность узнать, как использовать Terraform и Ansible для решения ваших задач.
👉 Регистрация открыта: https://vk.cc/cM7pnl
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❓Задумывались, как упростить управление инфраструктурой и сделать её более прозрачной и управляемой? Узнайте, как сделать это с помощью Terraform на открытом вебинаре.
Мы расскажем, как концепция Infrastructure as Code помогает автоматизировать и контролировать процессы, избавляя вас от необходимости вручную управлять виртуальными машинами через интерфейс облачных провайдеров. Один раз описав желаемое состояние инфраструктуры, вы сможете подключать любые облачные провайдеры, когда это будет нужно.
Преимущества очевидны: автоматизация, контроль версий и возможность откатиться к предыдущим состояниям. Понимание этих инструментов — шаг к эффективному управлению вашей инфраструктурой.
🎁Зарегистрируйтесь на вебинар и получите в подарок запись полезного эфира "Ansible: быстрый старт". Это отличная возможность узнать, как использовать Terraform и Ansible для решения ваших задач.
👉 Регистрация открыта: https://vk.cc/cM7pnl
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🐳 Как устроен Docker: что происходит «под капотом»
Поговорим немного про базу.
Docker — одно из самых популярных средств контейнеризации. Его простота снаружи скрывает сложную архитектуру. Разберём, как он устроен внутри.
1) Что такое контейнер?
Контейнер — изолированная среда, где запускается приложение со всеми зависимостями.
⚠️ Это не виртуальная машина: контейнер делит ядро ОС с хостом, но видит только свою «песочницу» через изоляцию.
2) Основные компоненты
• Docker Engine
– Docker Daemon (
– Docker CLI (
– REST API — взаимодействие CLI и Daemon
👉 Пример:
3) Namespaces
Механизм изоляции в Linux, создающий для контейнера:
• свой процессный ID (pid namespace)
• файловую систему (mnt namespace)
• сеть (net namespace)
• hostname (uts namespace)
• IPC (ipc namespace)
👉 Благодаря namespace контейнер видит «свою» мини-ОС, хотя на деле — это лишь виртуальные границы.
4) Cgroups
Ограничивают и учитывают ресурсы (CPU, RAM, I/O, сеть).
Пример: можно задать лимит 512 МБ RAM и 0.5 CPU.
Если приложение превышает лимит — Docker его ограничит или остановит.
5) Union File Systems (OverlayFS)
Docker использует многослойную файловую систему. Каждый шаг
При запуске контейнера создаётся верхний writable-слой, остальные read-only.
👉 10 контейнеров на одном образе разделяют слои → экономия места.
6) Container Runtime
Docker использует
Daemon вызывает
7) Docker Images
Образ — read-only слои, собранные в Union FS.
Каждый слой — изменения относительно предыдущего (например, установка пакета → новый слой).
Хранение: локально (
8) Docker Networking
Docker создаёт виртуальные сети (bridge, overlay, host).
По умолчанию контейнеры подключаются к bridge и получают IP из внутреннего пула.
👉 Можно пробросить порты через
В Swarm используется Overlay network (сеть между хостами).
9) Безопасность
Docker использует:
• seccomp (ограничение системных вызовов)
• AppArmor / SELinux (контроль привилегий)
• user namespaces (отображение UID контейнера в другой UID хоста)
⚠️ По умолчанию контейнеры имеют широкий доступ (например,
10) Что происходит при `docker run nginx`?
1. CLI отправляет запрос через API
2. Daemon ищет образ (локально или в registry)
3. Создаётся read-write слой контейнера
4. Создаются namespace (pid, net, mnt…)
5. Применяются cgroups
6. Вызывается
7. Контейнер подключается к сети
8. Запускается ENTRYPOINT/command
Контейнер живёт, пока жив его процесс.
11) Почему Docker — не магия?
Docker использует стандартные возможности ядра Linux (namespaces, cgroups, chroot, seccomp, overlayfs), оборачивая их в удобный интерфейс.
Контейнер — просто изолированный процесс, а не полноценная VM.
Поэтому Docker лёгкий, быстрый, удобный.
12) Заключение
Под капотом Docker:
• namespaces — изоляция
• cgroups — контроль ресурсов
• runc — запуск
• overlayfs — многослойная ФС
• REST API + Daemon + CLI — взаимодействие
Docker скрывает сложность, давая простой инструмент для запуска, сборки, развёртывания приложений.
Теперь, зная внутреннее устройство, можно глубже понять контейнеры, лучше их настраивать и оптимизировать.
➡️ Подробнее
Поговорим немного про базу.
Docker — одно из самых популярных средств контейнеризации. Его простота снаружи скрывает сложную архитектуру. Разберём, как он устроен внутри.
1) Что такое контейнер?
Контейнер — изолированная среда, где запускается приложение со всеми зависимостями.
⚠️ Это не виртуальная машина: контейнер делит ядро ОС с хостом, но видит только свою «песочницу» через изоляцию.
2) Основные компоненты
• Docker Engine
– Docker Daemon (
dockerd
) управляет контейнерами, образами, сетями – Docker CLI (
docker
) — интерфейс пользователя – REST API — взаимодействие CLI и Daemon
👉 Пример:
docker run nginx
→ CLI отправляет запрос, Daemon находит образ, создаёт контейнер, запускает процесс.3) Namespaces
Механизм изоляции в Linux, создающий для контейнера:
• свой процессный ID (pid namespace)
• файловую систему (mnt namespace)
• сеть (net namespace)
• hostname (uts namespace)
• IPC (ipc namespace)
👉 Благодаря namespace контейнер видит «свою» мини-ОС, хотя на деле — это лишь виртуальные границы.
4) Cgroups
Ограничивают и учитывают ресурсы (CPU, RAM, I/O, сеть).
Пример: можно задать лимит 512 МБ RAM и 0.5 CPU.
Если приложение превышает лимит — Docker его ограничит или остановит.
5) Union File Systems (OverlayFS)
Docker использует многослойную файловую систему. Каждый шаг
Dockerfile
создаёт новый слой. При запуске контейнера создаётся верхний writable-слой, остальные read-only.
👉 10 контейнеров на одном образе разделяют слои → экономия места.
6) Container Runtime
Docker использует
runc
для запуска контейнера (соответствует OCI Runtime Spec). Daemon вызывает
runc
, который через clone()
, setns()
, chroot()
изолирует процесс.7) Docker Images
Образ — read-only слои, собранные в Union FS.
Каждый слой — изменения относительно предыдущего (например, установка пакета → новый слой).
Хранение: локально (
/var/lib/docker
) или в реестре (Docker Hub, GitLab Container Registry).8) Docker Networking
Docker создаёт виртуальные сети (bridge, overlay, host).
По умолчанию контейнеры подключаются к bridge и получают IP из внутреннего пула.
👉 Можно пробросить порты через
-p
, создать собственные сети, объединять контейнеры через docker network connect
.В Swarm используется Overlay network (сеть между хостами).
9) Безопасность
Docker использует:
• seccomp (ограничение системных вызовов)
• AppArmor / SELinux (контроль привилегий)
• user namespaces (отображение UID контейнера в другой UID хоста)
⚠️ По умолчанию контейнеры имеют широкий доступ (например,
/proc
виден). Для production стоит ограничивать права (например, --cap-drop
).10) Что происходит при `docker run nginx`?
1. CLI отправляет запрос через API
2. Daemon ищет образ (локально или в registry)
3. Создаётся read-write слой контейнера
4. Создаются namespace (pid, net, mnt…)
5. Применяются cgroups
6. Вызывается
runc
для изоляции процесса7. Контейнер подключается к сети
8. Запускается ENTRYPOINT/command
Контейнер живёт, пока жив его процесс.
11) Почему Docker — не магия?
Docker использует стандартные возможности ядра Linux (namespaces, cgroups, chroot, seccomp, overlayfs), оборачивая их в удобный интерфейс.
Контейнер — просто изолированный процесс, а не полноценная VM.
Поэтому Docker лёгкий, быстрый, удобный.
12) Заключение
Под капотом Docker:
• namespaces — изоляция
• cgroups — контроль ресурсов
• runc — запуск
• overlayfs — многослойная ФС
• REST API + Daemon + CLI — взаимодействие
Docker скрывает сложность, давая простой инструмент для запуска, сборки, развёртывания приложений.
Теперь, зная внутреннее устройство, можно глубже понять контейнеры, лучше их настраивать и оптимизировать.
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Docker Tip: ускоряем сборку с помощью BuildKit + Target Stage
Многие знают про
👉 Если у тебя много стадий (например, build + тесты + production), ты можешь не собирать всё каждый раз, а запускать только нужную стадию:
Пример:
📈 Что это даёт:
- ⚡️ Пропускаешь финальную сборку (например, оптимизацию прод-образа)
- 🔍 Быстро тестируешь только нужный слой (например, dev-stage)
- 💾 Экономишь кэш и ускоряешь сборку — собирается только то, что нужно
🔥 Включи BuildKit по умолчанию
Добавь в файл
Теперь
---
🎯 Бонус-совет: кэш зависимостей через RUN --mount=type=cache
Для Python:
Для npm:
✅ Это ускоряет повторные билды на десятки процентов 💨
👀 Итог:
Не просто строй Docker-образы — строй их умно. BuildKit + правильные таргеты + кэш → твой билд летает 🚀
Многие знают про
docker build
, но редко используют BuildKit + multi-stage с опцией `--target` для локальной отладки.👉 Если у тебя много стадий (например, build + тесты + production), ты можешь не собирать всё каждый раз, а запускать только нужную стадию:
Пример:
DOCKER_BUILDKIT=1 docker build --target dev-stage -t myapp:dev .
📈 Что это даёт:
- ⚡️ Пропускаешь финальную сборку (например, оптимизацию прод-образа)
- 🔍 Быстро тестируешь только нужный слой (например, dev-stage)
- 💾 Экономишь кэш и ускоряешь сборку — собирается только то, что нужно
🔥 Включи BuildKit по умолчанию
Добавь в файл
~/.docker/config.json
:
{
"features": {
"buildkit": true
}
}
Теперь
docker build
всегда использует BuildKit — он быстрее, лучше кэширует и умеет собирать слои параллельно.---
🎯 Бонус-совет: кэш зависимостей через RUN --mount=type=cache
Для Python:
RUN --mount=type=cache,target=/root/.cache \
pip install -r requirements.txt
Для npm:
RUN --mount=type=cache,target=/root/.npm \
npm install
✅ Это ускоряет повторные билды на десятки процентов 💨
👀 Итог:
Не просто строй Docker-образы — строй их умно. BuildKit + правильные таргеты + кэш → твой билд летает 🚀