Docker простыми словами
6.31K subscribers
255 photos
30 videos
3 files
156 links
Сообщество по докеру.

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

Открыты к критике и ждем вашего фидбека.
@viktorreh @anothertechrock
Download Telegram
🐬 ТОП-9 Docker-контейнеров для VPS


1️⃣ Nginx – универсальный веб-сервер и прокси
docker run -d -p 80:80 -p 443:443  
-v /path/to/config:/etc/nginx/conf.d
nginx:alpine



2️⃣ PostgreSQL – надёжная база данных
version: '3.8'
services:
db:
image: postgres:15
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: strongpassword
POSTGRES_DB: appdb
volumes:
- ./pgdata:/var/lib/postgresql/data
restart: always



3️⃣ Redis – кэш и брокер сообщений
docker run -d --name redis -p 6379:6379 redis:alpine



4️⃣. Grafana – визуализация данных
grafana:
image: grafana/grafana
ports:
- "3000:3000"
volumes:
- ./grafana:/var/lib/grafana
restart: always



5️⃣ Prometheus – мониторинг и алертинг
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
restart: always



6️⃣ WordPress – CMS для сайтов
wordpress:
image: wordpress
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: admin
WORDPRESS_DB_PASSWORD: strongpassword
WORDPRESS_DB_NAME: appdb
volumes:
- ./wp-content:/var/www/html/wp-content



7️⃣ Nextcloud – облачное хранилище
nextcloud:
image: nextcloud
ports:
- "8081:80"
volumes:
- ./nextcloud:/var/www/html



8️⃣ Portainer – управление контейнерами
docker run -d -p 9000:9000 
-v /var/run/docker.sock:/var/run/docker.sock
portainer/portainer-ce


9️⃣ Traefik – современный прокси с автонастройкой
traefik:
image: traefik:v2.10
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.yml:/etc/traefik/traefik.yml


Наш Docker чатик
🐬
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥3🫡1
🖥 На Stepik вышел курс, который учит работать с Docker на реальных проектах.

Владение Docker - навык, который отличает новичка от профи,

Сегодня почти всё разворачивается в контейнерах.

Если ты не умеешь работать с Docker, ты медленнее, зависим от чужих настроек и постоянно ловишь баги «у меня локально работает».

• как упаковывать проекты в контейнеры
• как поднимать целые системы за минуты
• как избегать типичных ошибок в продакшене
• как делать стабильные и повторяемые окружения
•в нем разобраны все возможные ошибки

Только практика и реальные кейсы от авторов Docker Академии- с нуля до уверенного уровня.

🎁 Скидка 40 процентов действует 48 часов


👉 Записывайся и сделай Docker своим настоящим рабочим инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥4🥰1💩1
🐳 Полезный, но не банальный Docker-совет

Если ты запускаешь контейнеры в проде или CI/CD - никогда не полагайся только на `latest` тег.
Вместо этого всегда фиксируй версии по SHA-digest, а не по тегам образов.

Вот почему 👇

🔹 Тег latest может поменяться в любой момент — образ обновится, а твой контейнер внезапно поведёт себя по-другому.
🔹 Даже фиксированные теги (1.21, 3.10 и т.п.) не гарантируют стабильность — кто-то мог пересобрать их с новыми зависимостями.
🔹 Digest (sha256:...) — это точный отпечаток конкретного образа, который гарантирует, что в проде и CI запустится один и тот же код.

Пример безопасного запуска:

docker pull python@sha256:bcfb1c7d1c21f0c84793e9...
docker run python@sha256:bcfb1c7d1c21f0c84793e9... python app.py


💡 Так ты избежишь непредсказуемых багов, когда образ “вдруг” стал другим — особенно важно для CI/CD и продакшена.
👍12
🚀 Docker Time Machine - необычный инструмент для экспериментов с контейнерными конфигурациями

Проект позволяет «перематывать время» в Docker окружении:
вы можете сохранять состояние, переключаться между снимками и тестировать изменения без боли отката или пересборки всего окружения.

Зачем это может быть полезно:
• быстрый rollback при тестировании
• сравнение конфигураций и зависимостей
• воспроизведение окружений для баг-репродукции
• создание учебных сценариев и демонстраций

Интересная идея для тех, кто активно работает с контейнерами и экспериментирует с конфигурациями.

🔗 Репозиторий: https://github.com/jtodic/docker-time-machine
4👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🐳 8 ключевых концепций Docker, которые должен знать каждый разработчик

Освоение этих основ — первый шаг к DevOps-грамотности и созданию production-ready систем.

Разберёмся подробнее 👇

6️⃣ Docker Image
→ Read-only образ, содержащий код приложения, окружение и зависимости.
→ Можно представить как чертёж для контейнеров.

2️⃣ Docker Container
→ Запущенный экземпляр Docker-образа.
→ Изолированный, лёгкий, воспроизводимый — идеален для переносимости.

3️⃣Dockerfile
→ Текстовый файл с пошаговыми инструкциями для сборки образа.
→ Автоматизирует процесс сборки.

4️⃣ Docker CLI
→ Инструмент командной строки для взаимодействия с Docker.
→ Основные команды: docker run, docker build, docker exec.

5️⃣ Docker Compose
→ Инструмент для запуска многоконтейнерных приложений через docker-compose.yml.
→ Отлично подходит для микросервисов и локальных окружений.

6️⃣ Docker Registry
→ Репозиторий для хранения и распространения Docker-образов.
→ Публичный (Docker Hub) или приватный (Harbor, GitHub Packages).

7️⃣ Docker Networks
→ Механизм, который позволяет контейнерам безопасно взаимодействовать друг с другом.
→ Используйте режимы bridge, host или overlay в зависимости от задачи.

8️⃣Docker Volume
→ Решение для постоянного хранения данных контейнеров.
→ Позволяет сохранять данные между перезапусками контейнеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104
🚀 Удобный дашборд для Docker-контейнеров

Dockpeek — это легкий и интуитивно понятный дашборд для управления Docker-контейнерами. Он позволяет быстро получать доступ к веб-интерфейсам контейнеров, отслеживать порты и обновлять образы одним кликом. Автоматическое определение меток Traefik упрощает организацию контейнеров.

🚀 Основные моменты:
- Мгновенный обзор всех запущенных контейнеров и их портов
- Интеграция с Traefik для автоматического отображения адресов
- Простой доступ к веб-интерфейсам контейнеров
- Поддержка управления несколькими Docker-хостами
- Никакой конфигурации не требуется, работает сразу

📌 GitHub: https://github.com/dockpeek/dockpeek
👌1
🐋 Docker-совет: используйте `HEALTHCHECK` не только для статуса, но и как скрытый «авто-рестарт триггер» для сложных сервисов.

Фишка:
HEALTHCHECK может выполнять скрипт, который проверяет не только, жив ли процесс, но и корректно ли работает ваш сервис (доступ к БД, состояние очередей, ответ API, время отклика и т.п.).

Если HEALTHCHECK начинает возвращать EXIT 1, Docker помечает контейнер как unhealthy.
А если контейнер запущен через --restart=always или в оркестраторе - он автоматически пересоздаётся как при аварии.

Пример:
HEALTHCHECK может «ловить» зависшие соединения, мёртвые воркеры или блокировки, которые сам процесс не считает фатальными — но которые ломают приложение.

Мини-пример:

HEALTHCHECK --interval=30s --timeout=5s
CMD curl -f http://localhost:8080/health || exit 1


Зачем это нужно:
- Автоматически перезапускает контейнер при внутренних зависаниях, а не только при краше.
- Позволяет держать сервисы «самоочищающимися».
- Часто заменяет костыльные cron-перезапуски.

Обычно HEALTHCHECK используют просто «чтобы было», но при правильной настройке это мощный инструмент самовосстановления.
👍71
🐳 Шпаргалка по сетям Docker

Docker изолирует контейнеры не только по процессам и файловой системе, но и по сети. От этого зависит, смогут ли контейнеры общаться между собой, будут ли они доступны извне и насколько безопасно это взаимодействие.

Основные типы сетей

• Bridge — сеть по умолчанию.

Контейнеры получают внутренний IP и могут общаться друг с другом. Для связки нескольких сервисов в одной среде лучше создавать свои пользовательские сети (docker network create). Тогда контейнеры будут доступны по имени, например ping db.

• Host — общая сеть с хостом.

Контейнер не имеет отдельного IP: он использует сетевой стек машины. Это снижает изоляцию, но убирает накладные расходы на маршрутизацию. Подходит для сервисов, где важна скорость.

• None — полная изоляция.

Контейнер запускается без сети. Применяется редко, в основном для задач, где сеть не нужна (утилиты, тесты).

• Overlay — сеть для кластера.

Объединяет несколько Docker-хостов. Используется в Swarm и Kubernetes. Контейнеры на разных серверах работают так, будто они рядом.

• Macvlan — контейнер как полноценный участник LAN.

Контейнер получает MAC-адрес и «выглядит» в локальной сети как отдельное устройство. Это удобно, если требуется доступ из реальной сети напрямую, например для IoT или legacy-приложений.

Полезные команды

Список сетей:
docker network ls

Подробная информация о сети:
docker network inspect bridge
Создать сеть:
docker network create mynet
Удалить сеть:
docker network rm mynet
Подключить контейнер к сети:
docker network connect mynet app1
Отключить контейнер от сети:
docker network disconnect mynet app1
👍53
Большой тест по Docker для новичков из 85 вопросов - https://qarocks.ru/test_post/big-docker-quiz/

Проходите и пишите у кого 85 из 85:)

P.S если найдете ошибки в ответах, присылайте попросим исправить)
🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
🛠 Go-инструмент для sanity-проверок контейнеров - крошечный бинарник и ноль зависимостей.

Если нужно быстро проверить контейнер перед деплоем, без тяжёлых тулов и образов - preflight как раз про это. Написан на Go, работает автономно, можно встроить в CICD или локальную диагностику.

🔗 https://github.com/vertti/preflight

#golang

@Golang_google
🔥2
Docker Volumes & Data Persistence

→ Контейнеры по умолчанию временные, их данные исчезают после остановки или удаления.
→ Docker даёт механизмы для постоянного хранения, чтобы данные переживали перезапуски.
→ Самый надёжный способ - использовать Docker volumes.

1. Почему важна устойчивость данных

→ Контейнеры часто пересоздаются при обновлениях и масштабировании.
→ Без персистентности пропадут логи, базы данных, загрузки пользователей, конфиги.
→ Docker volumes решают это, вынося данные за пределы файловой системы контейнера.

2. Варианты хранилищ в Docker

a) Volumes
→ Управляются Docker.
→ Хранятся в /var/lib/docker/volumes/.
→ Не зависят от контейнеров.
→ Лучший выбор для БД и долгоживущих данных.

b) Bind Mounts
→ Привязывают локальную директорию хоста к контейнеру.
→ Удобно в разработке.
→ Менее переносимые.

c) tmpfs Mounts
→ Данные только в памяти.
→ Очень быстрые, но непостоянные.
→ Для временных и чувствительных данных.

3. Что такое Docker Volume

→ Это область постоянного хранения, управляемая Docker.
→ Не удаляется при удалении контейнера.
→ Можно безопасно шарить между контейнерами.

Создать volume:

docker volume create mydata


Использовать:


docker run -v mydata:/app/data nginx


Посмотреть:

docker volume inspect mydata

4. Типы Volumes

a) Named Volumes
→ Создаются вручную.
→ Чистая изоляция от файлов системы хоста.
→ Лучший вариант для продакшена.

b) Anonymous Volumes
→ Без имени.
→ Могут удаляться вместе с контейнером.
→ Для временных задач.

5. Преимущества Docker Volumes

→ Данные переживают рестарты.
→ Легко бэкапить и переносить.
→ Работают при обновлении контейнеров.
→ Можно шарить между контейнерами.
→ Docker оптимизирует хранение под производительность.

6. Bind Mounts

→ Позволяют смонтировать директорию хоста:


docker run -v /host/path:/container/path myapp



→ Удобно в разработке (горячая перезагрузка кода).
→ В продакшене использовать аккуратно.

7. Persistency в Docker Compose

Compose автоматически управляет volumes.

Пример:

services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data

volumes:
pgdata:


→ База сохраняет данные между перезапусками.

8. Бэкап и восстановление Volumes

Бэкап:

docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar czvf /backup/backup.tar.gz /data


Восстановление:

docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar xzvf /backup/backup.tar.gz -C /


9. Как выбрать способ хранения

→ Volumes - лучший вариант для продакшена.
→ Bind mounts - для разработки.
→ tmpfs - для временных и быстрых операций.

Quick tip

→ Docker volumes - основа устойчивости данных.
→ Даёт гибкость, скорость и надёжность.
→ Незаменимы для баз данных, stateful-сервисов и реальных продакшен-приложений.```
👍4🔥3
Oracle on Docker

Автор: Sean Scott
Год издания: 2023

#docker #en

Скачать книгу
🤔21
Forwarded from KazDevOps
🗣Внимание, конкурс!

Разыгрываем 7 ваучеров на обучение и сертификацию со скидкой 100% от The Linux Foundation, а также 7 доступов к видеокурсу Kubernetes: База от Slurm.

🟣 Каталог электронных курсов и сертификации

Ваучеры можно применить к любому:

— онлайн-курсу
— сертификационному экзамену (CKA, CKS, CKAD и другие — в комплекте!)
— или пакету (курс + сертификация)

🟣 Курс Kubernetes: База от Slurm.

Условия розыгрыша просты: 🔵 Подпишитесь на KazDevOps и жми кнопку "Учавствую!" под оригинальным постом в канале KazDevOps.

🚩 29 января подведем итоги и выберем 7 победителей. Каждый победитель получит ваучер + доступ к курсу от Slurm. Активировать ваучеры нужно до 07.01.2027. После этого у вас будет 1 год и 2 попытки, чтобы завершить обучение и сдать экзамен.

Go-go-go, и успехов!

@DevOpsKaz 😛
Please open Telegram to view this post
VIEW IN TELEGRAM
💩2👍1
Безопасность контейнеров

Автор:
Лиз Райс
Год издания:
2021

#devops #ru

Скачать книгу
🤔1
🖥 Sidekick — инструмент командной строки для быстрого развёртывания приложений на VPS.

💡 Sidekick позволяет настроить сервер, запустить контейнеры из Dockerfile с балансировкой нагрузки и автоматическим SSL, поддерживает деплой без простоев, управление доменами и интеграцию SOPS для защиты данных. Он позиционируется как альтернатива Fly.io, подходящая для самостоятельного хостинга проектов на VPS с Ubuntu, делая его более доступным и экономичным.

🔐 Лицензия: GPL-3.0

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Вопросы которые иногда могут за дать по dockery на любом собеседовании программиста или тестировщика:

Смотреть

Часть 2
👍5