🚀 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%
Для активации дефолтной виртуальной машины
15%
Для коммита изменений, внесенных в образ 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-контейнер с только нужным кодом и либами.
🔥7
Вопрос на собеседовании.
Как определить состояние контейнера 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
👍3🔥3❤2