Производственный цех с отдельными контейнерамиФото: Yetkin Ağaç / Pexels
← Все подборки Маршрут Bashdays

Docker, Podman и контейнеры

Все про контейнеры: Docker, Podman, сборки, окружение, управление и смежные инструменты.

dockerpodmancontainerконтейнерконтейнерыkubernetesk8sdockge
92 материалов в подборке
О подборке

Практические материалы про контейнерную инфраструктуру: от Dockerfile и переменных окружения до Podman, Kubernetes и управления домашними сервисами.

Сначала новые

Материалы маршрута

Материалов: 92

devops

Как не выставить порты Docker наружу

Привязка опубликованных портов Docker Compose к 127.0.0.1 закрывает прямой доступ к контейнеру извне, но оставляет его доступным для локального Nginx. Разбираем безопасный ports binding на примере Gitea и альтернативу с Traefik.

Фото: Ann H / Pexels
devops

Почему proxy_pass в Nginx ломает путь к Flask

Разбираем, почему Flask возвращает Not Found при проксировании приложения через location /app в Nginx. На конкретной конфигурации показываем, как завершающий слэш в proxy_pass меняет путь запроса и устраняет ошибку маршрутизации.

Фото: Sérgio Souza / Pexels
bash

Зачем ставить ./ перед запуском скрипта

Объясняем, почему исполняемый файл из текущего каталога запускают через ./ и как оболочка использует PATH. Разбираем безопасность такого поведения, опасность добавления точки в PATH и полные пути для cron.

Фото: Tom Fisk / Pexels
devops

Как масштабировать GitLab Runner без вреда продакшену

Практическая схема размещения GitLab Runner на отдельных серверах без лишней нагрузки на продакшен. Разбираем общие теги, балансировку заданий, регистрацию нескольких раннеров и деплой по SSH.

Фото: Cristian Camilo Estrada / Pexels
bash

Конфиг-агент на Bash для восстановления Nginx

Собираем минимальный конфиг-агент на Bash, который синхронизирует эталонные настройки Nginx из Git. Скрипт с cron, rsync и systemctl автоматически восстанавливает конфиги и перезагружает сервис только при изменениях.

Фото: Omar Ashraf / Pexels
devops

Как не волноваться на собеседовании в DevOps

Авторский разбор собеседований в DevOps: финансовая подушка, подготовка по требованиям вакансии, честные ответы и вопросы работодателю. Отдельно обсуждаем роль HR и причины, по которым сильные кандидаты не доходят до технической …

Фото: Tima Miroshnichenko / Pexels
linux

Как установить Ubuntu 23 или 24 в WSL

Показываем три способа установить свежую Ubuntu в WSL: импортировать rootfs из Docker, выполнить dist-upgrade или поставить Ubuntu Preview. Внутри — команды экспорта контейнера, импорта tar-архива и проверки дистрибутивов.

Фото: Bhavishya :) / Pexels
soft

Taskwarrior для задач прямо в терминале

Знакомимся с консольным таск-трекером Taskwarrior и собираем минимальную систему личных задач без тяжёлого интерфейса. Добавляем и закрываем задачи, делим их на домашний и рабочий проекты, создаём алиасы и намечаем синхронизацию …

Фото: Jakub Zerdzicki / Pexels
devops

Как не надо внедрять Kubernetes

История внедрения Kubernetes ради моды на примере корпоративного WordPress: быстрый старт, нестабильная база, инциденты и неизбежная переделка. Разбираем, почему оркестратор нужен не каждому проекту и как практический эксперимент …

Фото: Alex Levis / Pexels
devops

Как отлаживать Docker-контейнер, который не запускается

Собираем намеренно сломанный образ Nginx и последовательно отлаживаем Docker-контейнер, который сразу завершается. Используем docker ps, logs, inspect, exec, cp и dive, чтобы найти ошибку в конфигурации, проверить слои и …

Фото: Gustavo Fring / Pexels
workflow

Почему статус-кво мешает внедрять новые технологии

Разбираемся, почему пользователи и инженеры сопротивляются изменениям даже тогда, когда новое решение объективно эффективнее. На примерах технологий, продукта и A/B-тестов смотрим, когда статус-кво тормозит развитие, а когда …

Фото: James Wheeler / Pexels
devops

goManageDocker управляет Docker из терминала

goManageDocker добавляет текстовый интерфейс для управления образами, контейнерами и томами Docker без длинных команд. Инструмент устанавливается одной shell-командой и подходит для локальных пет-проектов.

Фото: Bulat843 🌙 / Pexels
services

Puter — операционная система в браузере

Puter запускает рабочий стол, приложения и урезанный терминал прямо в браузере, а сам проект можно развернуть в Docker. Смотрим, чем полезна открытая браузерная операционная система для маломощных устройств и удалённой работы.

Фото: Sai M / Pexels
devops

Полные логи Docker Build без перерисовки

Параметр --progress=plain отключает динамическую перерисовку вывода Docker BuildKit и сохраняет весь лог сборки на экране. То же поведение можно включить переменной окружения BUILDKIT_PROGRESS.

Фото: Samuel Wölfl / Pexels
devops

Как восстановить Dockerfile из образа с Dedockify

Dedockify анализирует историю Docker-образа и формирует приближённый Dockerfile, сокращая ручную работу при реверсе контейнеров. Показываем запуск через Docker и удобный alias для повторного использования.

Фото: Ivan S / Pexels
networks

WatchYourLAN для контроля устройств в локальной сети

WatchYourLAN сканирует локальную сеть, показывает найденные устройства в веб-интерфейсе и сообщает о новых подключениях. Утилиту можно запустить в Docker, связать с InfluxDB и Grafana и использовать для домашних сетевых …

Фото: Vladimir Srajber / Pexels
self-hosted

Dockge как лёгкая альтернатива Portainer

Dockge предлагает простой веб-интерфейс для управления Docker Compose без перегруженности Portainer. В материале — возможности проекта, готовый compose-файл, работа с логами, .env и встроенной консолью контейнеров.

Фото: Jonas F / Pexels
linux

Suicide Linux: одна ошибка — и система удалена

Suicide Linux запускается в Docker с корнем хоста и удаляет систему после первой ошибочной команды. Опасный эксперимент допустим только в одноразовой изолированной лаборатории.

Фото: Ann H / Pexels
bash

Форматер длинных команд Bash

Онлайн-форматер превращает длинную однострочную Bash-команду в читаемый многострочный вариант с переносами и отступами. Инструмент пригодится для Docker, gcloud и других громоздких консольных конструкций.

Фото: Tanha Tamanna Syed / Pexels
devops

Kubernetes на минималках с K3s

Пошаговая установка однонодового Kubernetes-кластера K3s на одной виртуальной машине с 2 vCPU и 2–4 ГБ RAM. Настраиваем kubectl, запускаем Deployment и Service, разбираем ограничения K3s по сравнению с kubeadm и экономим ресурсы …

Фото: Craig Dennis / Pexels
self-hosted

Uptime Kuma для простого мониторинга сайта

Uptime Kuma проверяет доступность сайтов, API, ключевые слова в ответах и срок действия SSL-сертификатов. Показываю простой Compose-файл для запуска собственного мониторинга с уведомлениями в Telegram.

Фото: panumas nikhomkhai / Pexels
linux

local0–local7 для разделения логов

Разбираем syslog facility local0–local7 и отделяем логи приложений от системных сообщений auth, daemon, mail и kern. Показываем пример на Python, настройку rsyslog и практическую схему категорий.

Фото: Maria Orlova / Pexels
linux

Как ускорить APT с eatmydata

Ускоряем установку пакетов APT с помощью eatmydata и сравниваем время переустановки Midnight Commander. Объясняем отключение fsync, fdatasync, flock и msync, а также риски для целостности данных.

Фото: Binoy Y S / Pexels
dev

Проверка конфигов через config-file-validator

Утилита config-file-validator проверяет JSON, YAML, TOML, XML, INI, ENV, HCL и другие конфигурационные форматы прямо из терминала. Показываем установку бинарника, запуск validator и результат проверки файлов.

Фото: Markus Winkler / Pexels
linux

jc превращает вывод Linux-команд в JSON

Утилита jc преобразует вывод iptables, ls, fstab, ping и других Linux-команд в структурированный JSON. Показываем простой конвейер с jq, доступные парсеры и вариант использования jc как Python-модуля.

Фото: Bibek ghosh / Pexels
linux

Proxmox на Raspberry Pi 5 через Pimox7

Пробуем установить Proxmox на Raspberry Pi 5 с помощью Pimox7 и сталкиваемся с несовместимыми зависимостями Perl, Ceph и PVE. Разбираем результат эксперимента и оставляем ссылку на рабочую инструкцию.

Фото: Tima Miroshnichenko / Pexels
soft

Atuin для синхронизации истории команд

Atuin заменяет стандартный поиск Ctrl+R, хранит историю shell-команд в SQLite и синхронизирует её между компьютерами. Рассматриваем шифрование, фильтры и самостоятельный сервер через Docker Compose.

Фото: Godfrey Atima / Pexels
services

Nginx Proxy Manager для управления прокси

Nginx Proxy Manager предоставляет веб-интерфейс для reverse proxy, TLS-сертификатов Let's Encrypt, wildcard DNS Challenge и списков доступа. Сервис быстро разворачивается через Docker Compose и поддерживает пользовательские …

Фото: Brett Sayles / Pexels
devops

Как выбрать сильного DevOps-инженера

Авторская рекомендация DevOps-инженера с акцентом на самостоятельность, глубокий troubleshooting, документацию и умение быстро осваивать технологии. В стеке кандидата — Ansible, GitLab, Docker, HashiCorp, YAML и CI/CD pipeline.

Фото: Resume Genius / Pexels
devops

Одна SSH-сессия для deploy pipeline

Объединяем несколько команд деплоя в одну SSH-сессию внутри GitLab CI pipeline. Многострочный YAML-блок с heredoc снижает риск упереться в MaxSessions или Fail2ban и делает сценарий развёртывания читаемее.

Фото: cottonbro studio / Pexels
devops

Очистка GitLab Container Registry

Настраиваем Cleanup Policies в GitLab Container Registry: расписание очистки, защищённые теги, регулярные выражения и возраст образов. Дополнительно рассматриваем удаление через UI, API, regclient, docker-gc и …

Фото: Anete Lusina / Pexels
bash

Условный параметр platform для ARM64 в pipeline

Разбираем, как условно добавлять параметр --platform linux/arm64 в Docker-команду внутри pipeline. Сравниваем Bash-конструкцию [[ ]] и POSIX-совместимый вариант с [ ], чтобы один сценарий работал на разных архитектурах.

Фото: Jonathan Borba / Pexels
bash

Таймер обратного отсчёта на Bash

Два варианта таймера обратного отсчёта на Bash: с ведущим нулём через tput и упрощённый цикл с управляющими последовательностями терминала. Разбираем позиционирование и скрытие курсора, расчёт длины строки и обновление счётчика на …

Фото: Image Hunter / Pexels
bash

Как Bash-скрипту определить запуск в контейнере

Проверяем из Bash, работает скрипт на хосте или внутри Docker-контейнера. Рассматриваем файл /.dockerenv, проверку процесса kthreadd через /proc/2/status и сохранение изменённого контейнера командой docker commit.

Фото: Joni Tuohimaa / Pexels
devops

Как устроено обучение в Linux Factory

Разбираем формат обучения в Linux Factory для будущих DevOps-инженеров: более 40 уроков и домашних заданий, Docker, Git, пайплайны, мониторинг и Infrastructure as Code. Внутри — личное наставничество, код-ревью, свободный темп и …

Фото: Yan Krukau / Pexels
devops

Как восстановить Dockerfile из готового образа

Восстанавливаем логику сборки Docker-образа, когда исходный Dockerfile потерян или недоступен. Используем docker history и ключ --no-trunc, изучаем слои через Dive, извлекаем файлы командой docker cp и проверяем образ с помощью …

Фото: SpaceX / Pexels
self-hosted

Как поднять свой аналог Heroku с Dokploy и Coolify

Разбираемся, как работают self-hosted PaaS-платформы и чем Dokploy и Coolify могут заменить Heroku на собственном сервере. Рассматриваем сборку приложений из Git, запуск контейнеров, маршрутизацию трафика и место таких решений …

Фото: Coral Grandbois / Pexels
linux

Когда использовать Snap вместо APT

Сравниваем пакетные менеджеры Snap и APT в Linux. Разбираем переносимость пакетов между дистрибутивами, песочницу, автоматические обновления, зависимости и ситуации, где важнее системная интеграция и производительность.

Фото: Maor Attias / Pexels
linux

Как записать терминал в GIF через VHS

Автоматизируем запись терминала с помощью VHS и сценария `.tape`. Настраиваем размер кадра и команды, запускаем генерацию GIF в Docker и публикуем готовую анимацию.

Фото: Spemone / Pexels
workflow

Как Selectel подарил мне баланс-борд

История неожиданной посылки от Selectel с баланс-бордом, приглашением на Day-Off и отсылками к облачной инфраструктуре. Распаковка подарка, фотографии комплекта и впечатления DevOps-инженера.

Фото: Tima Miroshnichenko / Pexels
devops

Как включить Container Registry в self-hosted GitLab

Включаем Container Registry в self-hosted GitLab через gitlab.rb и разбираемся, почему одного переключателя registry_enabled недостаточно. Настраиваем интеграцию Let’s Encrypt, выполняем reconfigure и проверяем запуск реестра …

Фото: panumas nikhomkhai / Pexels
linux

Как найти лишние файлы в Linux через cruft

Утилита cruft находит файлы, которые появились в Linux в обход пакетного менеджера. Настраиваем исключения для Docker и пользовательских каталогов, сохраняем отчёт и ищем забытые скрипты или подозрительные артефакты.

Фото: cottonbro studio / Pexels
devops

Как безопасно перенести Docker-образы к себе

Разбираем практический ответ на блокировку публичного Docker-реестра без сомнительных прокси. Переносим официальные образы во внутреннюю инфраструктуру, фиксируем версии и сохраняем контроль над цепочкой поставки.

Фото: Wolfgang Weiser / Pexels
self-hosted

Домашний сервер на Raspberry Pi

Практический разбор домашнего сервера на Raspberry Pi с Ubuntu, Dockge и внешними дисками. В материале — контейнеры Seafile, Jellyfin, Uptime Kuma, Syncthing, мониторинг и резервное копирование через rclone в S3 Selectel.

Фото: Jakub Zerdzicki / Pexels
devops

Crane для работы с контейнерными образами

Практическое знакомство с Crane для работы с контейнерными образами без Docker-клиента. Копируем образы между реестрами, экспортируем файлы, сравниваем конфигурации, считаем размер и меняем метки без повторной сборки.

Фото: Wolfgang Weiser / Pexels
workflow

Как кот устроил апгрейд MacBook

Рабочая история о коте, оставленном MacBook и неожиданно дорогих последствиях удалённой работы. Напоминание о том, почему технику и домашних животных лучше не оставлять без присмотра.

Фото: DUONG QUÁCH / Pexels
devops

Почему не стоит переделывать чужую инфраструктуру

История о смене DevOps-инженеров, усложнении рабочей инфраструктуры и внезапном переходе на Teleport. Почему новые практики нужно согласовывать, а систему — упрощать без потери доступа владельца.

Фото: Brett Sayles / Pexels
linux

Удалённый Linux-рабочий стол с GPU

Сравниваем X11 Forwarding и RDP в Docker для удалённой работы с графическими приложениями на Linux-сервере. Разбираем подключение GPU NVIDIA и AMD, необходимые устройства контейнера и безопасный SSH-туннель.

Фото: Andrey Matveev / Pexels
bash

TCP и UDP-запросы через /dev в Bash

Проверяем TCP- и UDP-порты средствами Bash через /dev/tcp и /dev/udp, когда в системе нет curl, wget или telnet. Добавляем timeout, читаем код возврата и сравниваем подход с netcat.

Фото: Brett Sayles / Pexels
devops

Как настроить Docker SNAT через Dummy-интерфейс

Разбираемся, почему Docker использует MASQUERADE вместо адреса Dummy-интерфейса, и находим скрытую настройку host_ipv4 в исходниках Moby. Создаём bridge-сеть, которая выполняет SNAT контейнеров через нужный публичный IP.

Фото: Brett Sayles / Pexels
networks

Локальные домены без DNS с nip.io

Показываем, как nip.io преобразует IP-адрес внутри доменного имени и позволяет открывать локальные сервисы без правки /etc/hosts. Проверяем поддомены, порты и выпуск SSL-сертификата для публичного IP.

Фото: Adem Percem / Pexels
linux

Condition и Assert в systemd

Настраиваем условный запуск systemd-юнитов через ConditionPathExists и другие директивы Condition. Сравниваем пропуск юнита с ошибкой Assert и комбинируем проверки существования и монтирования ресурсов.

Фото: MART PRODUCTION / Pexels
devops

Как Docker генерирует имена контейнеров

Разбираемся, откуда берутся случайные имена Docker-контейнеров и как устроен генератор Moby с пасхалкой для Стива Возняка. В конце собираем похожий генератор на Bash и рассматриваем готовые альтернативы.

Фото: Tima Miroshnichenko / Pexels
qa

Сколько стоит фреймворк автоматизации #2

Знаешь это чувство, когда ждёшь регресс дольше, чем сам работаешь? У меня рантайм был 34 минуты, и две трети времени уходило на очистку QA-стенда. Решение пришло через Docker и Testcontainers — теперь тесты летят за 14 минут, а …

Фото: Jonathan Borba / Pexels
devops

Безопасность Docker контейнеров. Важные настройки

Разбираем безопасность Docker контейнеров на практике. Security_opt, cap_drop, read_only, pids_limit, запуск не от root, ограничения CPU/RAM, seccomp, privileged и network_mode. Показываю, какие параметры Docker Compose реально …

Фото: Bùi Hoàng Long / Pexels
devops

Termix бесплатный менеджер серверов. Обзор

Я потыкал Termix, бесплатный аналог Termius. И Termix выигрывает в открытости, поддержке SSH туннелей и возможности управлять файлами из браузера. Минусы – нестабильный VNC, странные анимации панели и наверное необходимость ручных …

Фото: panumas nikhomkhai / Pexels
devops

Управление Docker контейнерами без Portainer и Dockge

У меня на малинке висит целый зоопарк Jellyfin, qBittorrent, Grafana, Prometheus, Uptime Kuma и куча другого. Portainer для таких целей избыточен как космический корабль для поездки в магазин. Да и интерфейс там сделан через жопу …

Фото: Simon R. Minshall / Pexels
devops

Как перейти с Docker на Podman

Вместе с Романом Шубиным, СТО и автором канала Bash Days, собрали отдельный мини-курс по Podman. Внутри — восемь материалов, которые помогут освоить инструмент с открытым исходным кодом для работы с контейнерами.

Фото: Alex Levis / Pexels
devops

Секрет ускорения Docker сборки

Дружище, если твой Dockerfile начинается с COPY и только потом npm install, то соболезную. Каждая твоя сборка переустанавливает зависимости заново, хотя они сто лет не менялись. Я сам так делал, пока не понял, что кеш Docker …

Фото: Willians Huerta / Pexels
dev

Hugo за 30 секунд. Мой пайплайн на Gitea Actions

Мне надоело кормить корпоративных монстров своими данными и ждать пока их джава-скрипты прогрузятся. Gitea встала на мой дохлый сервер как родная и начала летать даже с кривым конфигом. Ты получишь тот же функционал но без слежки …

Фото: Frans van Heerden / Pexels
devops

S3 кластер на Garage, как прикрутить HAProxy

В прошлый раз я тебе показал как собрать S3 кластер из трех серверов на Garage. Теперь самое время накрутить ему балансировщик и SSL сертификат чтобы всё работало как часы даже если одна из нод ляжет спать. В этой части мы ставим …

Фото: LUNA LUNA / Pexels
devops

Свой S3 или пошаговая настройка Garage

Три рандомных сервака, композник и голый opensource — вот мой рецепт собственного S3 облачного хранилища. Garage не просит денег, реплицирует данные на все ноды и переживает падение любого сервера. Инструкция для тех, кто не …

Фото: K / Pexels
devops

Как добавить переменные в контейнер Podman

Учимся работать с переменными окружения в Podman удобно, гибко и безопасно. Когда мы запускаем контейнер, в большинстве случаев предварительно нужно указать настройки - порт, пароль, режим работы, адрес базы и т. д. Зачастую такие …

Фото: Erik Mclean / Pexels
games

Браузерный киберпанк-симулятор хакера — DeepNet

Забудьте про графику, в DeepNet всё построено на терминале и командах Bash. Игра очень атмосферная, с онлайн-миром и кучей возможностей для прокачки. Я залип на ней надолго, советую всем, кто любит подобные симуляторы.

Фото: ds rexy / Pexels
devops

Как дебажить Kubernetes и Docker с помощью «тулбоксов»

Любишь Kubernetes и Docker, но дебаг — головная боль? Покажу, как тулбоксы с набором утилит помогают быстро диагностировать проблемы и даже внедрять debug-контейнеры прямо в pod. Работает и на обычном докере!

Фото: Daniel Andraski / Pexels
security

Поднимаем свой поисковик или Fuck The Google!

Хватит доверять Google! Я поднял свой приватный поисковик, который не хранит твои данные и спокойно работает через прокси. Простой гайд и мои впечатления от SearXNG. Зацени, очень крутая штука!

Фото: Markus Winkler / Pexels
devops

Как современный Docker упростил работу с compose файлами

Почему теперь можно использовать просто compose.yaml, а не привычный docker-compose.yaml. Всё стало проще, но если у тебя старая ОС — есть нюансы. Заодно обсудим, зачем вообще был нужен version в файле.

Фото: Ann H / Pexels
linux

Bind vs Volume в Docker

Если ты тоже путаешься, что лучше — bind или volume, этот пост для тебя. Покажу основные правила и примеры из жизни, чтобы ты не писал дичь и не ломал себе окружение.

Фото: Juan Manuel Montejano Lopez / Pexels
self-hosted

Прощай Helper scripts. Запускаем OCI в Proxmox 9.1

В этом разборе показываю, как в Proxmox 9.1 работает новая нативная поддержка OCI-образов. На примере nginx:latest скачиваем образ из Docker Hub, превращаем его в LXC-контейнер и запускаем без единой команды Docker. Разбираем, как …

Фото: Alex Levis / Pexels
self-hosted

Обновляем Proxmox 8 до Proxmox 9 (OCI)

Подробная инструкция по переходу на новую ветку Debian Trixie в Proxmox. Фиксим репы, обновляем ключи, прогоняем pve8to9 и устанавливаем всё, что предлагает система. Даю комментарии по каждому этапу, чтобы апдейт не превратился в …

Фото: Suki Lee / Pexels
soft

Запускаем Windows программы на Linux

WinBoat — маленькое чудо для тех, кто сидит на Linux, но не хочет отказываться от Windows. Это мой новый фаворит для запуска виндовых приложений в Linux без лишних заморочек. Делюсь впечатлениями.

Фото: ready made / Pexels
linux

SelectOS в деле

Я решил попробовать поднять GitLab CE на SelectOS без всяких Docker’ов — в лоб, как есть. Завёл раннеры, погонял CI и нагрузку, SelectOS тащит!

Фото: Christina Morillo / Pexels
workflow

Тренажёр для технических собеседований

Довольно часто сталкиваюсь с вопросом от ребят — вот бы с кем-нибудь пройти интервью/собес... Раньше бы я ответил так — ну дак пройди, накидай откликов, согласуй интервью да и сходи. Делов то.

Фото: Christina Morillo / Pexels
linux

Пробуем SelectOS

Проникаемся новой операционной системой SelectOS на базе Debian, тыкаем в реальных условиях, смотрим фишки и фичи. Пробуем установить базовый софт и провести нагрузочное тестирование.

Фото: I'm Zion / Pexels
security

Всё что нужно знать про CrowdSec

Ну вот и обзор. В большей части это вольный перевод официального сайта приложения и картинки оттуда, но есть вставки с моей инсталляции. Ссылки на многие описания сохранены. Я не использую весь потенциал продукта - это прям сто …

Фото: Caleb Oquendo / Pexels