
Вам надоело использовать терминал для управления контейнерами Docker? Мне надоело, и вот тогда я нашел Portainer. Он предлагает простой в использовании интерфейс для управления контейнерами Docker. Кроме того, он работает даже в высокодоступных конфигурациях.
Почему я не хочу жить в терминале
Хотя я и не начинал с Docker-CLI (я начал использовать Docker в Unraid), у меня есть достаточный опыт работы с ним. Я могу оценить преимущества использования терминала, поскольку он может быть свободен от беспорядка, а навыки, как правило, переносимы между операционными системами. Однако я обнаружил, что управлять моими контейнерами Docker в терминальной среде не так уж и весело и просто.

С Docker-CLI все основано на терминале. Единственная последовательность — это терминал, и все требует команды. Я знаю, я уже слышу, как вы кричите в свой монитор: «Вот в чем суть!» Однако я действительно думаю, что иногда хороший пользовательский интерфейс может быть удобен.
Поскольку мой основной опыт использования Docker был основан на Unraid, я уже привык к наличию надлежащего пользовательского интерфейса для запуска и остановки контейнеров, перезапуска контейнеров, внесения изменений без необходимости переписывать команды и т. д. Поэтому, когда я планировал перейти с моего сервера Unraid на Docker на выделенный сервер приложений, я знал, что мне нужно другое решение, чем Docker-CLI.
Portainer обеспечивает удобный пользовательский интерфейс для всех установок Docker
Если вы никогда раньше не слышали о Portainer, то это на самом деле сам контейнер Docker. Portainer подключается к вашему Docker’s sock, который является специальным файлом, позволяющим ему общаться с движком Docker и управлять вашими контейнерами.

После установки Portainer внутри вашего экземпляра Docker он откроет свой веб-интерфейс, с помощью которого вы сможете управлять своими контейнерами Docker. По умолчанию веб-интерфейс доступен на порту 9443 (порт 8000 также открыт, но не используется для каких-либо веб-интерфейсов).
Веб-интерфейс находится за SSL-сертификатом, который изначально является самоподписанным. Я поместил свой экземпляр Portainer за обратным прокси-сервером, чтобы избавиться от ошибки SSL, но достаточно просто нажать, что вы принимаете риски, поскольку вы понимаете, что это самоподписанный сертификат.

На самом деле вы можете использовать Portainer для управления как существующими, так и новыми контейнерами Docker. Он не может редактировать себя (без внесения некоторых изменений в файл конфигурации), но Portainer может контролировать все остальное в вашей среде Docker через свой простой в использовании интерфейс.
Вот почему я решил использовать Portainer. Я действительно не хотел жить в Docker-CLI и терминальном интерфейсе, так как мне хотелось чего-то более удобного для пользователя. Portainer дал мне именно то, что я искал, и потребовалось всего несколько минут, чтобы начать работу.
Portainer можно использовать совместно с Docker-CLI
Поскольку Portainer подключается к основному Docker sock, его можно использовать одновременно с Docker-CLI. Было несколько случаев, когда я не мог разобраться с чем-то в Portainer, поэтому я обращался к Docker-CLI, чтобы это исправить.

Каждый раз, когда я это делал, все работало отлично. В конце концов я понял, как управлять такими вещами, как сети, тома и т. д. в Portainer, что означало, что мне больше не нужно было возвращаться к Docker-CLI. Однако возможность изменять контейнер в Docker-CLI и Portainer одновременно довольно хороша, если учесть все обстоятельства.
Это также означает, что вы можете использовать Portainer как ступеньку, если ваша цель — полностью перейти на Docker-CLI. Это также работает и в другую сторону, если вы хотите отказаться от использования терминала для всего, но уже знакомы с тем, как работает Docker-CLI. Поскольку я перешел с другого веб-интерфейса Docker, было приятно, что мне не пришлось изучать Docker-CLI, чтобы все запустить, и я мог просто плавно перейти на Portainer.
Portainer предлагает как Docker Run, так и Docker Compose Deployments
В сети вы, скорее всего, не найдете много инструкций, специфичных для Portainer, по развертыванию контейнеров Docker. Они существуют для некоторых контейнеров, но большинство инструкций, с которыми вы столкнетесь, будут либо для Docker-CLI, либо для Docker Compose. Честно говоря, это было для меня небольшим шоком. Исходя из Unraid, где существуют специальные инструкции для многих контейнеров Docker, Portainer просто предполагает, что вы знаете, как все настроить самостоятельно.

К счастью, у меня есть опыт работы с Linux и терминалом, так как я могу перевести инструкции Docker Run или Docker Compose в стандартный механизм развертывания Portainer. Стандартный способ добавления одного контейнера в Portainer использует хорошо продуманный пользовательский интерфейс для ввода всего. Также довольно легко перевести существующие команды в этот интерфейс.
Однако если вы хотите придерживаться использования Docker Compose, вот где Portainer’s Stacks вступает в дело. Stacks — это просто интерфейс для Docker Compose. У меня есть несколько вещей, работающих в Stacks — в основном контейнеры, которые было трудно разделить из-за того, как Docker обрабатывает сетевые соединения и коммуникацию между контейнерами.
Я стараюсь избегать Stacks, когда могу, потому что эти контейнеры плохо взаимодействуют с другими контейнерами, не запущенными как часть Stack. Каждый Stack, который вы запускаете, может легко взаимодействовать внутри себя, создавая перекрестные помехи между несколькими базами данных и таким простым делом. Поэтому для определенных служб (например, Immich) я использую Stacks. Я стараюсь запускать почти все остальное автономно, хотя для меня так просто проще.
Если вы решите использовать Stacks, каждый запущенный контейнер будет доступен в стандартном представлении контейнера в Portainer. Там вы можете изменять аспекты отдельных контейнеров без необходимости перезапускать весь стек. Просто знайте, что если вы перезапустите весь стек в какой-то момент, он вернется к исходной настройке, а не к чему-либо, что вы изменили в представлении контейнера.
Portainer предлагает простые настройки высокой доступности
Хотя я еще не окунулся в это, Portainer на самом деле делает Docker с высокой доступностью довольно простым. Он использует Docker Swarm для этого и позволяет вам развертывать несколько серверов, которые могут запускать ваши различные контейнеры. Это на самом деле одна из основных причин, по которой я выбрал Portainer. В конечном итоге я хочу перенести свои сервисы с большого, прожорливого стоечного сервера, на котором они находятся, и перейти на несколько мини-ПК в конфигурации с высокой доступностью. Изучение Portainer теперь готовит меня к этому.

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

В кластере высокой доступности вы также можете указать, на каких серверах может работать конкретная служба. Например, если у вас только два из трех серверов могут транскодировать, то вы можете указать вашему контейнеру Plex работать только на этих двух серверах.
Однако если вы настроили Plex на работу только на одном конкретном сервере, поскольку только он способен выполнять транскодирование, и вы отключите этот сервер, Plex просто перейдет в автономный режим, поскольку не будет подходящего кандидата для миграции.
Как только Portainer будет запущен, ознакомьтесь с этими 10 контейнерами Docker, которые, по моему мнению, должен запустить каждый хоумлабер. От простых вещей, таких как Homepage до Home Assistant, Tautulli и многого другого, в списке найдется что-то для каждого.