Я не программист, но весь мой домашний сервер работает на Docker — вот почему это круто

Illustration of the Docker logo, featuring a stylized whale carrying containers and a NAS server.

Думаете, что Docker — это исключительно для программистов? Я часто слышу такое мнение, но это полная чушь. Я не пишу код, но активно использую Docker для запуска десятков сервисов и приложений в своей домашней лаборатории.

Что такое Docker простыми словами?

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

Главная фишка Docker в том, что он позволяет запускать различные службы изолированно друг от друга и от основной операционной системы. Это повышает приватность и защищает вашу систему. Если один контейнер взломают, он получит доступ только к себе и к тем ресурсам, которые вы ему специально выделили.

Разработчик ли я?

Я бы не назвал себя «разработчиком» в полном смысле этого слова. Да, раньше я программировал и создавал приложения, но это было много лет назад. Умею работать с терминалом Linux и иногда ковыряюсь в HTML или CSS для личных сайтов, но полноценным разработчиком точно не являюсь.

В лучшем случае я экспериментатор. Мне нравится разбираться в разных штуках, подправлять код приложений под свои нужды и изучать различные сервисы, которые крутятся в моей домашней лаборатории.

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

Если я не разработчик, зачем мне Docker?

Несмотря на то, что Docker отлично подходит для задач разработки, я использую его совсем для другого: для создания домашней лаборатории.

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

Plex logo.

В моей домашней лаборатории крутится почти 30 Docker-контейнеров на основном хосте и еще полдюжины на дополнительном. Среди этих сервисов — Pi-hole, Plex, OpenSpeedTest, Calibre, paperless-ngx, Home Assistant, Tautulli, Homepage и множество других.

Возникает вопрос: почему я использую Docker вместо обычной установки приложений? Ответ прост: я обожаю контейнеры.

С Docker мой контейнер Plex не может получить доступ ни к чему в сети, если я сам ему это не разрешу. Поэтому я даю Plex доступ только к моей медиатеке и всё. Home Assistant вообще не имеет доступа к серверу — у него есть собственный IP-адрес, и он работает в сети, но если его взломают, он не доберется до другого оборудования.

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

Кроме того, Docker-контейнеры поставляются уже настроенными для приложения, которое вы хотите запустить, поэтому для запуска службы нужна минимальная настройка. Все зависимости уже есть и поддерживаются в актуальном состоянии создателем контейнера. Если зависимость требует перезагрузки, мне нужно перезапустить только Docker-контейнер, а не всю систему.

Docker также портативен — я могу легко сменить хост-систему без переустановки или перенастройки служб. Недавно я перенес свой Docker-сервер с одного компьютера на другой, и единственным контейнером, который не перенес конфигурацию, был Home Assistant (который я легко восстановил из резервной копии).

Когда я только начинал использовать Docker, не понимал, насколько полезной окажется эта функция. Но теперь использую её постоянно. Хотя возможность миграции приятна, моя любимая особенность Docker в том, что я могу переустановить контейнер без потери настроек или конфигураций.

Итак, зачем я использую Docker? Это просто самый простой способ устанавливать, тестировать и использовать службы в домашней лаборатории. Развертывание Docker-контейнера занимает несколько секунд. Когда закончил — просто удаляю контейнер, и служба (со всеми зависимостями) исчезает.

Docker управляет всей моей домашней лабораторией, и по-другому я уже не представляю

A cluster of rack-mounted enterprise-grade storage servers.

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

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

Docker просто упрощает управление домашней лабораторией и точно является лучшим инструментом для этой задачи.

В будущем планирую развернуть Docker в высокодоступной среде. По сути, у меня будет три сервера с похожими характеристиками, на всех будет крутиться Docker. Portainer, мой любимый менеджер Docker, будет распределять службы между разными серверами.

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

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

Docker абсолютно необходим для моей установки, и не вижу, чтобы это изменилось в ближайшее время.

Итак, нет, я не разработчик, но обожаю Docker. Если вы не разработчик, вам определенно стоит попробовать Docker — он изменит вашу установку к лучшему.

Существует множество Docker-контейнеров, которые можно попробовать. Десятки тысяч, на самом деле. Если это кажется ошеломляющим, вы не одиноки. Вот несколько моих любимых Docker-контейнеров, которые, по моему мнению, должны быть в каждой домашней лаборатории — от простых веб-страниц до полноценных служб.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий