W moim środowisku jest obecnie około 50 kontenerów, na 3 hostach. Zarządzanie nimi przez CLI oczywiście jest możliwe, ale to nie jest moim celem w życiu:) Bardziej zależy mi na czymś co mogę kliknąć i zapomnieć.
Na rynku jest kilka jeśli nie kilkanaście rozwiązań jak Dockge, czy Komodo ale jakoś mi nie podeszły.
Zdecydowałem się na Portainera, pokrótce jest to panel webowy do zarządzania środowiskiem kontenerów Docker (i nie tylko). Umożliwia wykonywanie chyba wszystkich podstawowych operacji jakie na co dzień wykonujemy, posiada dostęp do logów kontenera, statystyki i dostęp do konsoli. Fajne i intuicyjne.

Żeby zacząć potrzebujesz jakiś komputer najlepiej z linuxem (polecam Ubuntu Server lub Debiana)
jeżeli masz już dostęp, poniżej kroki które wykonamy
- Instalacja Dockera
- Zainstalujemy pierwszy kontener z Dockerem
- Ustawimy wstępnie Portainera
Instalacja dockera
Sprowadza się do wprowadzenia kilku komend, ale po kolei:
Najpierw zależności
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
Teraz certyfikaty repozytorium Dockera
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Dodajemy repozytorium
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee \
/etc/apt/sources.list.d/docker.list > /dev/null
i wrzeszcie instalujemy Dockera
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ostatnie szlify żebyś nie musiał za każdym razem robić sudo i automatyczny start Dockera
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ sudo systemctl enable docker
Instalacja Portainera
Jeżeli mamy już zainstalowanego Dockera:
Tworzymy sobie katalog /docker-data – to będzie nasz główny katalog dla wszystkich kontenerów a następnie w tym katalogu utwórz portainer
do środka wrzucamy plik docker-compose.yml
services:
portainer:
deploy:
resources:
limits:
cpus: '1'
memory: 512M
ports:
- 9443:9443
- 8000:8000
container_name: portainer
volumes:
- '/docker-data/portainer:/data'
- '/var/run/docker.sock:/var/run/docker.sock'
restart: unless-stopped
image: portainer/portainer-ee:latest
zapisujesz i wykonujesz:
docker compose up -d
następnie wpisujesz „https://ip serwera:9443” i ustalasz login i hasło

No, to łatwiejsza część skończona:)
Licencja Business Edition za darmo:)
Bezpłatna licencja jest oczywiście wystarczająca i absolutnie nie musisz mieć licencji business, natomiast za darmo to uczciwa cena.
Wypełnij poniższy formularz i pierwsze 3 serwery (instancje) Dockera w jednym panelu są za darmo:)
Take 3 – Get your first 3 nodes free
Teraz mała pauza i troszkę teorii
Jeżeli mamy dużo kontenerów, musimy popatrzeć z punktu widzenia wygody tworzenia i zarządzania. Czasem żeby jeden kontener działał, jest zależny od drugiego i najlepiej żeby uruchomił się zaraz po nim. Zatem wypadało by zorganizować te kontenery w paczki (stos), które od tej pory będziemy nazywać stackami, a wszystkie parametry takiego stacka definiujemy w pliku zwanym docker-compose.yml.
Czym są stacki w Portainerze w praktyce:
- masz plik
docker-compose.yml, który opisuje kilka usług (np. homeassistant, mysql, nodered), - wrzucasz go do Portainera w sekcji stacks,
- Portainer zarządza całym zestawem jak jednym (start, stop, aktualizacja).
Jak widzisz na zdjęciu poniżej mam kilka stacków, przyjrzyjmy się Home asisstant, zielone ikonki oznaczają że kontenery w stacku są aktualne, żółte że któryś kontener ma dostępną aktualizację

W środku znajduje się kilka podstawowych kontenerów, jak widać chyba trzeba będzie zaktualizować Home assistant i esphome

Gratulacje, utworzyłeś swój pierwszy kontener, do zarządzania kontenerami.
Jeżeli wypełniłeś formularz licencja przyjdzie Ci na maila.
Przykładzik – tworzymy pierwszy kontener
- Dodajmy sobie teraz pierwszy kontener Home assistant
- Wejdź w Stacks → Add stack w prawym górnym rogu.

1. Podaj nazwę stacka
2. wklej poniższą zawartość
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant
volumes:
- /docker-data/homeassistant/hass-config:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
network_mode: host
- włącz webhook (przyda się to później)
- odpal wszystko jednym kliknięciem
- Aktualizacja/modyfikacja stacka
- Edytujesz plik YAML bezpośrednio w Portainerze (lub nie, jeśli chcesz jedynie zaktualizować)
- wcięcia się robi spacjami nie tabulatoami
- Klikasz Update the stack
- Zada Ci on pytanie

jeżeli chcesz zaktualizować kontenery (czyli pojawi się nowa wersja Home assistanta) włącz Re-pull image and deploy,
Jeżeli tylko zmieniałeś jakąś opcję w docker-compose i chcesz zmienić ustawienia bez aktualizacji zostaw tę opcję wyłączoną
Po chwili pojawi się na zielono kontener Home assistant
wejdź na adres http://ip Twojego Serwera:8123 i wejdź do domu:)

Następnie tworzymy użytkownika, i przechodzimy formularz do samego końca.
Home assistant nawet znajdzie nasze urządzenia które już są w sieci i doda je automatycznie

Podsumowanie
- zainstalowaliśmy Dockera,
- uruchomiliśmy Portainera jako panel do zarządzania kontenerami,
- utworzyliśmy pierwszy stack i uruchomiliśmy w nim Home Assistant.
Dzięki Portainerowi zarządzanie Home Assistantem i innymi usługami w kontenerach jest prostsze i bardziej przejrzyste.
To świetna baza do dalszej nauki – kolejne aplikacje (np. MQTT, Esphome, Node-RED) możesz dodawać do nowych stacków lub do istniejącego.
Przejdziemy razem przez wszystkie te usługi.