Вы не поверите: Docker полностью перевернул мой взгляд на домашний сервер!

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

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

Что такое Docker?

Нет, это не просто название контейнера!

Docker

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

Сегодня Docker считается стандартом для запуска приложений в контейнерах — и в домашней среде, и на больших предприятиях. На Docker Hub уже больше 10 миллионов публичных образов — это кладезь готовых решений и, пожалуй, самый надежный источник для быстрого запуска нужного приложения внутри Docker (или других совместимых платформ).

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

Что такое контейнеры и принадлежит ли эта технология только Docker?

A container floating in the sea with the Docker logo inside it.

Docker участвовал в создании Open Container Initiative (OCI) — это стандарт, который поддерживают и другие платформы. Сам Docker не полностью открыт, но OCI — свободен для всех желающих.

Если Docker вам не по душе — альтернатив хватает: Podman, Containerd Nerdctl, Rancher Desktop, LXC и многие другие подходят к песочнице контейнеров не хуже.

Часть из них использует «внутренности» Docker, а часть реализована иначе, но суть одна — вы получаете работу с контейнерами.

Проще всего представить контейнер как особым образом настроенное приложение. Обычно каждый контейнер заточен под выполнение одной-двух задач. Можно собрать и более сложные образы, но специалисты советуют делать контейнеры под конкретное назначение — так всё проще и надежнее.

У каждого контейнера есть постоянное хранилище (Docker volume или папка на вашем диске) и временное — оно исчезает при обновлении контейнера. Это очень удобно: все ваши настройки всегда под рукой, а если сделать что-то не так и удалить контейнер — после переустановки ваши данные останутся на месте.

Чем контейнеры отличаются от виртуальных машин

Все готово, минимум нагрузки на систему

A Fedora virtual machine running on an Ubuntu host.

Если раньше вы не сталкивались с контейнерами, проще всего объяснить: это сверхлегкая альтернатива виртуальной машине, но все-таки не полноценная VM.

Контейнер — это обособленная минимальная среда прямо на вашем компьютере, заранее подготовленная исключительно для одного приложения. Например, можно запустить Plex в контейнере на базе Arch Linux, и там будет ровно столько Arch, сколько нужно Plex, ничего лишнего.

В отличие от виртуальных машин, контейнеры хорошо дружат с вашей основной системой: вы можете напрямую подключать (монтировать) папки и файлы с компьютера — для чтения и записи. Например, удобно связать папку внутри контейнера (/data или /config) с вашей локальной директорией — так все пользовательские данные остаются у вас под контролем.

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

Как запустить свой первый контейнер

На самом деле всё гораздо проще, чем кажется!

The Hello World Docker container being run on an Ubuntu server.

На самом деле запуск Docker-контейнера — проще простого. Есть два основных способа: команда docker run или через Docker Compose.

Раньше я почти не пользовался Docker Compose, но сейчас уже не представляю без него работу — настолько это удобно. Ниже покажу оба варианта — и классический docker run, и Docker Compose, чтобы вы смогли выбрать подходящий именно вам способ.

Всё, что нужно для старта, — установить Docker под вашу ОС. После установки можно сразу пробовать запускать первый контейнер.

Откройте терминал и выполните sudo docker run hello-world. Docker поздравит вас и подробно расскажет, что происходит шаг за шагом.

Хотите попробовать Docker Compose? Создайте небольшой файл docker-compose.yml по примеру ниже и выполните docker compose up:

Если ваш вывод похож на мой скриншот выше — значит, всё отлично, и можно двигаться дальше!

Как Docker Compose экономит ваше время и силы

Копируйте файл, чуть поправьте — сервисы взлетят за минуту!

A terminal running nano showing a Docker Compose file for Terminus.

Я показал, как запускать контейнеры через docker run и Docker Compose, но если вам важна простота, лучше сразу освоить Docker Compose — с ним удобно управлять даже десятками или сложными сервисами.


Подпишитесь на рассылку — секреты работы с Docker каждую неделю!

Docker Compose позволяет заранее собрать все параметры контейнера в одном файле. Менять его — проще простого. Когда вы пользуетесь docker run, чтобы поменять настройку (экспорт переменных, порт, монтирование и т. д.), приходится останавливать контейнер, переписывать команду и все запускать снова.

С Docker Compose всё хранится в docker-compose.yml: внесли правку, применили docker compose up -d — и изменения вступили в силу мгновенно.

Если не хочется заморачиваться с дополнительными веб-интерфейсами, вроде Portainer (кстати, я его люблю и очень советую), Docker Compose — самый быстрый и удобный способ держать всё под контролем. Все настройки всегда под рукой, никаких сложных команд!

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

Если вы ещё не пробовали Docker — самое время начать. Уверяю: управлять сервисами дома (и не только) станет просто и приятно как никогда!

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

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

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

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

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