Docker простыми словами
6.28K subscribers
219 photos
28 videos
3 files
123 links
Сообщество по докеру.

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

Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
Download Telegram
🚀 13 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🤡31🔥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-инженеров и архитекторов, разработчиков, специалистов служб эксплуатации.

Зарегистрироваться
🔥1💩1
Команды докера

Какая команда останавливает работающий контейнер, позволяет завершить выполнение контейнера и отключить его?

#вопросответ #команды

Пишите ваши варианты в комментариях к посту, а ответ будет скоро на канале.
Ответ:
docker stop


Примеры использования:

Остановка одного работающего контейнера:

docker stop mycontainer


Остановка нескольких:

docker stop first_container second_container third_container


Остановка по времени (в данном примере — через 30 секунд):

docker stop -t 30 mycontainer


#вопросответ #команды

Обсудить команды можно в нашем уютном докер чатике 🐬
6👍3
🚀 Docker + Python pro tip

Если вы запускаете 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 ps -a


Эта команда выведет список всех доступных контейнеров с их состоянием на сервере. Из этого списка нужно выбрать требуемый контейнер и узнать его состояние.


Обсудить можно в нашем уютном докер чатике 🐬

#собеседование
🤔21👍1
🖥 Минимальный и безопасный Dockerfile для Python-приложения.

В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.

Такой контейнер легче, безопаснее и запускается быстрее.

Отличная база для продакшена.

Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 csvlens — это инструмент командной строки для удобного просмотра и анализа CSV-файлов в терминале!

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

🔐 Лицензия: MIT

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Docker in Practice

Автор: Ian Miell
Год издания: 2019

#docker #en #книга

Скачать книгу
2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 КАК 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🔥32