Docker простыми словами – Telegram
Docker простыми словами
6.31K subscribers
230 photos
28 videos
3 files
132 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-контейнер с только нужным кодом и либами.
🔥8
Вопрос на собеседовании.

Как определить состояние контейнера 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
4👍3🔥3
📌 Подробная шпаргалка по командам 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🔥82👌1