🚀 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 git@github.com:corp/private.git
Безопасное использование ключей.
4\\. .dockerignore
node_modules
*.md
Ускоряет сборку.
5\\. HEALTHCHECK
HEALTHCHECK CMD curl -f http://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
🫡9🤡3❤1🔥1🍾1
«Штурвал 2.12»: кластер K8s за 15 минут
2 декабря в 11:00: next-next-next инсталляция кластера из GUI: ребята из «Лаборатории Числитель» покажут новый релиз «Штурвал 2.12».
В программе:
◾️развёртывание «Штурвала» с нуля с новым инсталлятором;
◾️обзор основных изменений: новый инсталлятор, обновленный UI создания кластера, развёртывание на OpenStack с нативными балансерами и Let's Encrypt, поддержка Cinder CSI и Ubuntu 24.04.
Для кого вебинар: DevOps-инженеров и архитекторов, разработчиков, специалистов служб эксплуатации.
Зарегистрироваться
2 декабря в 11:00: next-next-next инсталляция кластера из GUI: ребята из «Лаборатории Числитель» покажут новый релиз «Штурвал 2.12».
В программе:
◾️развёртывание «Штурвала» с нуля с новым инсталлятором;
◾️обзор основных изменений: новый инсталлятор, обновленный UI создания кластера, развёртывание на OpenStack с нативными балансерами и Let's Encrypt, поддержка Cinder CSI и Ubuntu 24.04.
Для кого вебинар: DevOps-инженеров и архитекторов, разработчиков, специалистов служб эксплуатации.
Зарегистрироваться
🔥1💩1
Для чего используется следующая команда Docker?
docker push user_name/repository_name
docker push user_name/repository_name
Anonymous Quiz
5%
Для создания образа
1%
Для активации дефолтной виртуальной машины
16%
Для коммита изменений, внесенных в образ Docker
78%
Для отправки изменений, внесенных в образ Docker, на Docker Hub
❤3
Команды докера❓
Какая команда останавливает работающий контейнер, позволяет завершить выполнение контейнера и отключить его?
#вопросответ #команды
Пишите ваши варианты в комментариях к посту, а ответ будет скоро на канале.
Какая команда останавливает работающий контейнер, позволяет завершить выполнение контейнера и отключить его?
#вопросответ #команды
Пишите ваши варианты в комментариях к посту, а ответ будет скоро на канале.
Ответ:
Примеры использования:
Остановка одного работающего контейнера:
Остановка нескольких:
Остановка по времени (в данном примере — через 30 секунд):
#вопросответ #команды
Обсудить команды можно в нашем уютном докер чатике 🐬
docker stop
Примеры использования:
Остановка одного работающего контейнера:
docker stop mycontainer
Остановка нескольких:
docker stop first_container second_container third_container
Остановка по времени (в данном примере — через 30 секунд):
docker stop -t 30 mycontainer
#вопросответ #команды
Обсудить команды можно в нашем уютном докер чатике 🐬
Telegram
Docker чат. Чат по докеру
You’ve been invited to join this group on Telegram.
❤6👍3
🚀 Docker + Python pro tip
Если вы запускаете Python-приложения в Docker, ускорить их можно с помощью многоступенчатой сборки.
Это позволяет собирать зависимости отдельно и не тащить весь мусор в финальный образ.
💡 Такой подход уменьшает размер образа и ускоряет деплой.
Вместо гигабайт вы получаете лёгкий production-контейнер с только нужным кодом и либами.
Если вы запускаете Python-приложения в Docker, ускорить их можно с помощью многоступенчатой сборки.
Это позволяет собирать зависимости отдельно и не тащить весь мусор в финальный образ.
# Этап сборки зависимостей
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
# Финальный минимальный образ
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
💡 Такой подход уменьшает размер образа и ускоряет деплой.
Вместо гигабайт вы получаете лёгкий production-контейнер с только нужным кодом и либами.
🔥8
Вопрос на собеседовании.
Как определить состояние контейнера Docker?
Чтобы определить состояние, надо запустить команду:
Эта команда выведет список всех доступных контейнеров с их состоянием на сервере. Из этого списка нужно выбрать требуемый контейнер и узнать его состояние.
Обсудить можно в нашем уютном докер чатике 🐬
#собеседование
Как определить состояние контейнера Docker?
Чтобы определить состояние, надо запустить команду:
docker ps -a
Эта команда выведет список всех доступных контейнеров с их состоянием на сервере. Из этого списка нужно выбрать требуемый контейнер и узнать его состояние.
Обсудить можно в нашем уютном докер чатике 🐬
#собеседование
Telegram
Docker чат. Чат по докеру
You’ve been invited to join this group on Telegram.
🤔2❤1👍1
В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.
Такой контейнер легче, безопаснее и запускается быстрее.
Отличная база для продакшена.
Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 КАК Docker РАБОТАЕТ ПОД КАПОТОМ
Большинство думает, что Docker - это «виртуалка, но легче». На самом деле Docker почти не виртуализирует ничего: он использует механизмы ядра Linux - namespaces, cgroups и overlay-файловые системы — чтобы создать иллюзию отдельной машины.
Контейнер - это просто обычный процесс, но ядро заставляет его видеть *свой собственный мир*: свою сеть, свои процессы, свою файловую систему, свои лимиты.
Docker лишь склеивает эти механизмы в удобный инструмент и автоматизирует запуск изолированных процессов.
Большинство думает, что Docker - это «виртуалка, но легче». На самом деле Docker почти не виртуализирует ничего: он использует механизмы ядра Linux - namespaces, cgroups и overlay-файловые системы — чтобы создать иллюзию отдельной машины.
Контейнер - это просто обычный процесс, но ядро заставляет его видеть *свой собственный мир*: свою сеть, свои процессы, свою файловую систему, свои лимиты.
Docker лишь склеивает эти механизмы в удобный инструмент и автоматизирует запуск изолированных процессов.
# Посмотреть namespaces текущего процесса
lsns
# Создать процесс в новом IPC, PID и UTS namespace
unshare --ipc --pid --uts bash
# Проверить ограничение CPU cgroups
cat /sys/fs/cgroup/cpu.max
# Посмотреть mount-слои overlayfs контейнера
find /var/lib/docker/overlay2 -maxdepth 2 -type d
❤4👍3🔥3
📌 Подробная шпаргалка по командам Docker
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
-
-
-
-
📦 Работа с образами
-
-
-
-
-
-
-
🚀 Контейнеры: запуск и управление
-
-
-
-
-
-
-
-
-
-
-
-
-
🧹 Очистка и обслуживание
-
-
-
-
-
-
-
📊 Мониторинг и отладка
-
-
-
🌐 Сети Docker
-
-
-
-
💾 Docker Volumes
-
-
-
-
⚙️ Docker Compose
-
-
-
-
-
-
-
-
🧠 Полезные советы
- Используй
- Проверяй размер Docker-данных через
- Для отладки всегда полезен
- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
Удобный и практичный референс для повседневной работы с Docker: образы, контейнеры, сети, тома и Docker Compose.
🐋 Общие команды Docker
-
docker --version — версия Docker-
docker info — информация о системе Docker-
docker help — список доступных команд-
docker <command> --help — помощь по конкретной команде📦 Работа с образами
-
docker pull <image> — скачать образ из реестра-
docker images — список локальных образов-
docker build -t name:tag . — собрать образ из Dockerfile-
docker tag <image> <repo>:<tag> — назначить тег образу-
docker rmi <image> — удалить образ-
docker image prune — удалить неиспользуемые образы-
docker image prune -a — удалить все неиспользуемые, включая невисячие🚀 Контейнеры: запуск и управление
-
docker run <image> — запустить контейнер-
docker run -d <image> — запуск в фоне-
docker run -it <image> bash — интерактивный режим-
docker ps — активные контейнеры-
docker ps -a — все контейнеры-
docker stop <container> — остановить контейнер-
docker start <container> — запустить остановленный-
docker restart <container> — перезапуск-
docker rm <container> — удалить контейнер-
docker rm -f <container> — принудительно удалить-
docker logs <container> — логи контейнера-
docker exec -it <container> bash — войти внутрь контейнера-
docker inspect <container> — подробная информация (JSON)🧹 Очистка и обслуживание
-
docker container prune — удалить все остановленные контейнеры-
docker image prune — удалить неиспользуемые образы-
docker volume prune — удалить неиспользуемые тома-
docker network prune — удалить неиспользуемые сети-
docker system prune — очистить всё неиспользуемое-
docker system prune -a — максимально агрессивная очистка-
docker system df — использование диска Docker’ом📊 Мониторинг и отладка
-
docker stats — использование CPU и памяти контейнерами-
docker top <container> — процессы внутри контейнера-
docker diff <container> — изменения файловой системы контейнера🌐 Сети Docker
-
docker network ls — список сетей-
docker network inspect <network> — информация о сети-
docker network create <name> — создать сеть-
docker network rm <name> — удалить сеть💾 Docker Volumes
-
docker volume ls — список томов-
docker volume inspect <volume> — информация о томе-
docker volume create <name> — создать том-
docker volume rm <name> — удалить том⚙️ Docker Compose
-
docker compose up — запустить сервисы-
docker compose up -d — запуск в фоне-
docker compose down — остановить и удалить всё-
docker compose build — пересобрать образы-
docker compose pull — скачать образы-
docker compose logs — логи всех сервисов-
docker compose ps — статус сервисов-
docker compose restart — перезапуск🧠 Полезные советы
- Используй
--rm, чтобы контейнер удалялся после выполнения- Проверяй размер Docker-данных через
docker system df- Для отладки всегда полезен
docker inspect- Регулярно чисти систему, чтобы Docker не съел весь диск
Эта шпаргалка закрывает 90% повседневных задач при работе с Docker - от локальной разработки до продакшена.
👍11🔥8❤2👌1